Selamlar,
Sistemde bazı ayarlamalar yapmak lazım gibi.
Aşağıdaki makale BSD ler için tuning içeriyor.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-kernel-limits.html
Linuxlar için my.cnf içinde
max_connections = 800
max_user_connections = 800
key_buffer = 36M
myisam_sort_buffer_size = 64M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 3M
table_cache = 1024
thread_cache_size = 286
interactive_timeout = 25
wait_timeout = 1800
connect_timeout = 10
max_allowed_packet = 1M
max_connect_errors = 99
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
tmp_table_size = 16M
#Kunthar EOM
Ayrıca file descriptor sayısını arttırmak lazım. Buradaki yönergeler
takip edilebilir.
http://bcr2.uwaterloo.ca/~brecht/servers/openfiles.html
Yukarıdaki ayarlar günlük 50.000 bağlantı ve bağlantı başına hayli yüklü
sql sorgularının çalıştığı bir sunucu için yapılmıştır.
Dikkat BSD ler için yukarıdaki ayarlar kullanılamaz.
Notlar:
1. Daima yapılan sql sorgularını kontrol etmek gerekir. Bunun için
mysql-benchmark kurulması önerilir.
Mümkünse asla SELECT * from şeklinde sql sorguları kullanılmaması gerekir.
2. Tabloların optimize edilmesi faydalı olabilir. OPTIMIZE için arama
yapınız.
Kolay gelsin,
Gökhan
Mesut GÜLNAZ wrote On 12/28/2006 12:59 PM:
061228 12:53:06 Out of memory; Check if mysqld or some other process
uses all available memory. If not you may have to use 'ulimit' to
allow mysqld to use more memory or you can add more swap space
Hatası alıyorum.
last pid: 60524; load averages: 15.43, 18.32, 20.05
up 9+01:25:02 12:55:35
387 processes: 4 running, 383 sleeping
CPU states: % user, % nice, % system, % interrupt,
% idle
Mem: 586M Active, 2544M Inact, 294M Wired, 168M Cache, 112M Buf, 234M Free
Swap: 6144M Total, 80K Used, 6144M Free
PID USERNAMEPRI NICE SIZERES STATETIME WCPU
CPU COMMAND
59890 mysql200 539M 97168K kserel 6:34 49.02%
49.02% mysqld
60361 www 40 31252K 16464K sbwait 0:00 0.20%
0.20% httpd
60079 www 40 30776K 15940K sbwait 0:01 0.15%
0.15% httpd
-su-2.05b# ps auxwww | grep mysql
mysql 59853 0,0 0,0 1788 1152 p0 I12:45PM 0:00,01
/bin/sh /usr/local/bin/mysqld_safe
--defaults-extra-file=/var/db/mysql/my.cnf --user=mysql
--datadir=/var/db/mysql --pid-file=/var/db/mysql/www.domain.com.pid -O
max_connection=1000
mysql 59890 0,0 2,4 551704 97700 p0 S12:45PM 7:17,55
/usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf
--basedir=/usr/local --datadir=/var/db/mysql --user=mysql
--pid-file=/var/db/mysql/www.domain.com.pid --port=3306
--socket=/tmp/mysql.sock -O max_connection=1000
-su-2.05b#
Şeklinde çalışıyor.
Apache ye olan istek sayısı:
-su-2.05b# netstat -an | grep 100.80 | wc -l
1184
-su-2.05b# egrep MaxClients /usr/local/etc/apache/httpd.conf
MaxClients 512 ==è bu değeri 150 den max olan 512 ye
ben çıkardım.
-su-2.05b#
Örnek birkaç satır
tcp4 0 0 100.100.100.100.80 *.*LISTEN
tcp4 0 65559 100.100.100.100.80 88.234.103.242.1498
FIN_WAIT_1
tcp4 0 64405 100.100.100.100.80 85.102.109.0.3054
FIN_WAIT_1
tcp4 0 0 100.100.100.100.80 85.106.181.106.1831
FIN_WAIT_2
tcp4 0 0 100.100.100.100.80 85.106.181.106.1830
FIN_WAIT_2
tcp4 0 64777 100.100.100.100.80 85.102.210.77.2302
FIN_WAIT_1
tcp4 0 65145 100.100.100.100.80 85.107.70.41.1477
FIN_WAIT_1
tcp4 0 65872 100.100.100.100.80 81.213.133.163.2327
FIN_WAIT_1
tcp4 0 55373 100.100.100.100.80 85.100.44.177.10329
FIN_WAIT_1
tcp4 0 13844 100.100.100.100.80 83.66.102.39.2187
FIN_WAIT_1
tcp4 0 46167 100.100.100.100.80 85.99.194.195.1449
FIN_WAIT_1
tcp4 0 0 100.100.100.100.22 172.16.0.80.1428
ESTABLISHED
tcp4 0 36 100.100.100.100.22 172.16.0.80.1149
ESTABLISHED
disk durumu:
/dev/ipsd0s1d9.7G2.5G6.4G28%/var
Bu sorunu nasıl aşabilirim? Mysql performans değerlendirmesi yapabilen
bir tool var mı. Webserver performans test tool u gibi?
Şimdiden teşekkürler.