RADYO ARABESK TÜRK FORUM ALEM BİZİ DİNLİYOR ARABESK DAMAR
www.radyoarabeskturk.com
RADYO ARABESK TÜRK FORUM ALEM BİZİ DİNLİYOR ARABESK DAMAR
www.radyoarabeskturk.com
RADYO ARABESK TÜRK FORUM ALEM BİZİ DİNLİYOR ARABESK DAMAR
Would you like to react to this message? Create an account in a few clicks or log in to continue.
RADYO ARABESK TÜRK FORUM ALEM BİZİ DİNLİYOR ARABESK DAMAR

RADYO ARABESK TÜRK
 
AnasayfaAramaLatest imagesKayıt OlGiriş yap
Radyo Arabesk TÜRK www.radyoarabeskturk.com

SİTENE HTML KODLAR EKLE




 

 Mysql Optimizasyonu Ayarları

Aşağa gitmek 
YazarMesaj
Blade
ADMİN
ADMİN
avatar


Uyari Seviyesi : uyari yok
<b>Mesaj Sayısı</b> Mesaj Sayısı : 3630
<b>Rep Puanı</b> Rep Puanı : 1007
<b>Aktiflik Puanı</b> Aktiflik Puanı : 111644
<b>Kayıt Tarihi</b> Kayıt Tarihi : 23/06/10
<b>Cinsiyet</b> Cinsiyet : Erkek

Kullanıcı Aktifligi
Basari :
Mysql Optimizasyonu Ayarları Imgleft3/3Mysql Optimizasyonu Ayarları Emptybarbleue  (3/3)
Seviye:
Mysql Optimizasyonu Ayarları 241687221/1Mysql Optimizasyonu Ayarları Emptybarbleue  (1/1)
Güçlülük:
Mysql Optimizasyonu Ayarları Imgleft1/1Mysql Optimizasyonu Ayarları Emptybarbleue  (1/1)

Mysql Optimizasyonu Ayarları Empty
MesajKonu: Mysql Optimizasyonu Ayarları   Mysql Optimizasyonu Ayarları EmptyPerş. Ekim 07 2010, 17:01

Yoğun siteler için mysql sunuclarında dikkat etmemiz gereken değişkenler var. Ancak bu değişkenlerle oynarken sistemin kullandığı ram oldukça yükselebilir swap’e geçebilir böylelikle makinayı kilitleyebiliriz. Azar azar artırıp testler yaparak değişkenlerin değerlerini analiz edip gerekli değişiklikleri yapmak gerekir.

Performasn artırmak için işimize en çok yarayacak değişkenler:

table_cache
key_buffer_size
query_cache_size
tmp_table_size
max_connections
wait_timeout
thread_cache_size
table_cache

Hali hazırda kullanılan değerleri mysql komut satırından SHOW STATUS komutu ile yada komut satırından

mysqladmin –i10 processlist extended-status

komutu ile listeleyebiliriz. İhtiyacımıza göre bu değerleri /etc/my.cnf den set edebiliriz.

1) Eğer opened_tables değeriniz yüksekse mutemelen table_cache değeriniz oldukça düşüktür.

table_cache 64
Open_tables 64
Opened_tables 544468

table_cache tüm thread’lerdeki açık tablo sayısıdır. Mysql multi-threaded olduğundan tablodaki birçok sorguyu aynı anda çalıştırıyor olabilir ve bunların her biri yeni bir tablo açacaktır. Bu nedenle bir kaç tablomuz olmasına rağmen daha fazla open_table ihtiyacımız olacaktır.

opened_tables değerinin yüksek olması bize daha fazla cache ihtiyacımız olduğunu gösterir.
Performansı artırıcı en öenemli şeylerden bir tanesi table_cache değerini yükseltmek olacaktır.

2) Eğer key_reads değeriniz yüksekse muhtemelen key_buffer_size değeriniz çok düşüktür. Cache hit oranı Key_reads ve key_read_requests değerleriyle hesaplanabilir.

key_buffer_size 16M
Key_read_requests 2973620399
Key_reads 8490571
(cache hit rate = 0.0028)

key_buffer_size, index buffer larının boyutunu ve okuma işlemi için index handle etme hızını etkiler. Mysql manuelinde de belirttiği gibi

Key_reads/Key_read_request oranı 0.01 değerinden düşük olmalıdır.

Ayrıca key_writes ve key_writes_request değerlerine de dikkat etmek gerekir.

key_writes/key_writes_request oranı 1 den küçük olmalıdır.

3) Wait_timeout, max_connection, thread_cache değerleri

Sleeping modunda uyuyan birçok process mevcut çünkü default olarak wait_timeout değeri oldukça yüksek. wait_timeout değerini iyice düşürürsek örneğin 30 saniyeye böylelikle mysql 30 saniye boşta kalan bağlantıları kapayacaktır.

Yoğun sunucularda Max_connection değerini de yükseltmemiz gerekecektir. Şu anda benim sunucumuzda set ettiğim değer 750. Idle client ların boşu boşuna boşuna tuttukları bağlantılar, yeni bağlantı isteği yapan client ları engelleyebilir. Max_connection değerini artırarak bundan kaçınabiliriz.

Mysql multi-threaded olduğundan sunucu yeni threadler yaratacaktır. Bu da CPU zamanından oldukça çalacaktır. Bu problemin önüne geçmek için Thread_cache değişkeninden faydalanabiliriz.

Mysql manuelinde de belirttiği gibi

Kaç adet thread ‘i tekrar kullanım için cahce de tutmalıyız? Bir client disconnect olduğunda client ‘ın thread leri eğer thread_cache_size değeri kadar thread önceden kalmadıysa cache de tutulur . Tüm yeni thread ler en önce cache den alınır. Ve yanlız cache boş olduğunda yeni bir thread yaratılır. Eğer çok sayıda yeni bağlantı isteği (connection attemp) oluyorsa bu değişken performans artırımı için kullanılabilir. (Normalde iyi bir thread implementasyonunuz varsa çokda kayda değer bir peformasn kazanımı sağlamaz). Connections ve Threads_created değerlerini kıyaslayarak varolan thread cache inizin verimini gözlemleyebilirsiniz.

Threads_created değeri yüksekse thread_cache_size değişkeninin artırmayı düşünebiliriz.
Cache hit rate , threads_created/Connections ile hesaplanabilir.

Threads_created/Connections.
thread_cache_size 0
Threads_created 150022
Connections 150023

thread_cache_size değeri my-large.cnf de 8 mb olarak önerilmiş. Biz alttaki formülü uygulayabiliriz.

table_cache = opened table / max_used_connection

4) tmp_table_size and Handler_read_rnd / Handler_read_rnd_next

Created_tmp_disk_tables değeri yüksekse tmp_table_size değişkeninin değerini artırmayı düşünebilirsiniz. Böylelikle temporary (geçici) tabloları diskte oluşmaktansa memory üzerinde oluşmasını sağlamış oluruz.

tmp_table_size 32M
Created_tmp_disk_tables 3227
Created_tmp_tables 159832
Created_tmp_files 4444

Created_tmp_disk_tables değeri statement lar çalıştırılırken disk üzerinde yaratılan temporary tabloların sayısıdır. Created_tmp_tables ise memory üzerinde yaratılanlardır.
Memory de yaratmak varken disk üzerinde yaratmak kötü bir durum. tmp_tables ın %2 kadarı diske giderse o kadar da kötü değil aslında. Yinde de tmp_table_size değerini artırmak fena fikir değil.

Handler_read_rnd çok yüksekse muhtemelen Mysql in tüm tabloları taramasını gerektirecek çok sayıda sorgunuz var ya da key ‘leri doğru dürüst kullanamayan Join ‘leriniz var demektir.
Handler_read_rnd 27712353
Handler_read_rnd_next 283536234

Örneğin üstteki değerler yüksek. Indexlerimizi ve sorgularımızı gözden geçirmemiz gerekiyor olabilir.

Son olarak değerleri çok yüksek değerlere almamanı gerekir. Sistemin çkmesine neden olabilirsiniz. Azar azar artırarak denemeler yapmalı , değişkenlerde gödrdüğünüz değerlere göre analiz yapmalısınız.

Örneğin Max_conneciton değeri artırıldığında ram kullnımı oldukça artacaktır. Max_connections hesabı için

Used MySQL memory = key_buffer + max_connections * (join_buffer + sort_buffer + thread_stack + tmp_table_size)

Bir de table_cache değerini artırırken dikaktli olmak gerekir. Çoğu işletim sistemi “open file descriptors” sayısını limitler. Mysql bir çok dosyayı açmak istediğinde işletim sistemi bu işlemi red edebilir.

Tüm bu bilgileri öğrenmemi sağlayan InterWorx ‘dan Pascal’a teşekkürler.

Tüm bu bilgilerin ışığında benim sunucumda yaptığım ve gayet memnun kaldığım ayarlar.

Benim mysql sunucum için yaptığım ayarlar :

# The MySQL server
[mysqld]
key_buffer = 384M
max_allowed_packet = 8M
table_cache = 1024
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M


optimizasyon
2 adet Xeon 2.8 cpu bulunan 2 gb ram sunucuda denenmiştir .

ALINTI

Sayfa başına dön Aşağa gitmek
http://www.radyoarabeskturk.com/
 
Mysql Optimizasyonu Ayarları
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
»  kablonet internet ayarları, kablonette dns ayarları
» Arama optimizasyonu değişiyor!
»  Apache * PHP Ayarları (php.ini,httpd.conf)
» Plesk Panel Ayarları
» Mysql - Backup to FTP (PHP Script)

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
RADYO ARABESK TÜRK FORUM ALEM BİZİ DİNLİYOR ARABESK DAMAR :: HOSTING :: Cpanel-
Buraya geçin: