Merhaba,

Bahattin ARICI wrote On 31-01-2010 14:12:
> Tabloların %90'ı innodb yapısı üzerine kurulu
> 370mb civarı innodb index büyüklüğü
> 250mb civarı innodb veri büyüklüğü
> toplam 320mb data
> toplam 430mb index boyutu

Veritabanınız çok küçükmüş. Verdiğiniz makine değil, Celeron 500 MHz işlemcili 
bir makine bile olsa rahat yetmesi gerekirdi.

> Uygulama gereği her bağlantı 5sn'de bir select sorgusu yapıyor.
> Bunun dışında kullanıcılar insert, update ve delete işlemleri
> gerçekleştiriyor.

Bu dert değil, sorgu önbelleği bunu halleder.

> innodb_buffer_pool_size        = 3192M         #innodb genel bellek

Veri boyunuzun 250 MB olduğu düşünülürse bu biraz fazla olmuş. Makinede sadece 
Mysql çalışıyor demiştiniz. Thread önbellekleri ile birlikte Mysql'in fazla 
ram kullanıp takas alanına düşmediğine eminsiniz değil mi?

> innodb_flush_method            = O_DIRECT

Eğer verileri SAN'de tutacak olursanuz bu ayar çok yavaşlatır unutmayın. Bence 
default'ta bıraksanız daha iyiydi.

> innodb_flush_log_at_trx_commit     = 1            #log dosyasina guvenli
> yazim yapmak icin.

Log dosyasına güvenli yazıyor ancak çok hızlı (~100ms) yazmaya çalışıyor. Bunu 
2 yaparsanız log'lara ortalama saniyede bir kez yazar, bu disk performansını 
biraz artabilir.

> innodb_lock_wait_timeout        = 200            #Saniye

Bunu niçin arttırma gereği duydunuz? Bir thread bir satırı kitlediğinde başka 
bir thread aynı satıra yazmak istediğinde bekleme süresini arttırmışsınız. Bu 
uzun beklemelere neden olabilir. Standart olarak 40-50 gibi bir şeydi, bence 
ellemeyin.

> join_buffer_size    = 1M

Eğer uygulamalarınızda join kullanan sorgular varsa bunu biraz daha 
arttırmanızı öneririm. Örneğin 4 veya 8 MB gibi.

> log            = /var/log/mysql/mysql.log         #mysql islem raporlari

Bu disklerinizi çok yavaşlatabilir. Özellikle de flush_log_at_trx_commit ile 
birleşince. :)

Sunucuda saniyedeki sorgu sayınız nedir? Çoğu yazma mı okuma mı?

> log_slow_queries    = /var/log/mysql/mysql-slow.log     #yavas sorgular icin
> long_query_time     = 10                    #yavas sorgular icin

Bunu 3 sn gibi bir değere çekerek yavaş sorguların log'lanmasını 
sağlayabilirsiniz.

> key_buffer        = 256M                    #myisam index dosyalari icindir.

Çok büyük myisam tablolarınız yoksa key_buffer'a bu kadar bellek ayırmanıza 
gerek yok.

> record_buffer        = 1M
> read_buffer_size    = 1M
> read_rnd_buffer_size    = 1M

Bunları azar daha arttırsanız özellikle index kullanmayan tablo taraması 
yapılan sorgularda yardımı olabilir. Mesela 2 ya da 4'er MB gibi.

> query_cache_limit    = 8M                    #sorgular icin ayrilan
> bellek miktari
> query_cache_size     = 16M                    #sorgular icin ayrilan

Sorgu önbelleğinizin doluluğu ve hit oranı nedir bilmiyorum, ama 
query_cache_limit'i düşürmenizi önereceğim. Şu haliyle büyük sonuç döndüren 
sorgular önbelleği yiyor ve sadece 2 sorgu önbellekleyebiliyorsunuz. Örneğin 
limit=1M ve size=16M yaparsanız daha fazla sayıda sorguyu belleğe 
sığdırabilirsiniz. Sorgularınızın çoğu yanıtının 8 MB tutacağını pek 
sanmıyorum da..

> [isamchk]
> key_buffer        = 512M

Tabloların çoğu innodb demiştiniz. Bence bunu 2-3 MB'a kadar azaltın. :)

Aslında bizim buradaki yorumlarımız biraz farazi oluyor. Mutlaka şu iki betiği 
çalıştırarak onların raporlarını inceleyin:

http://blog.mysqltuner.com
https://launchpad.net/mysql-tuning-primer

Özellikle tuning primer çok güzel bir rapor veriyor. Yalnız verdikleri 
raporlara güvenebilmeniz için Mysql sunucunuzun en azından birkaç saattir 
çalışıyor ve aktif kullanımda olması gerekir.


-- 
Alper Oğuz
[email protected]
_______________________________________________
Linux-sunucu E-Posta Listesi
[email protected]

Liste kurallarını http://liste.linux.org.tr/kurallar.php  bağlantısından 
okuyabilirsiniz;

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
http://liste.linux.org.tr/mailman/listinfo/linux-sunucu

Cevap