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 = 999999
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 USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND

59890 mysql 20 0 539M 97168K kserel 6:34 49.02% 49.02% mysqld

60361 www 4 0 31252K 16464K sbwait 0:00 0.20% 0.20% httpd

60079 www 4 0 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 I 12: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 S 12: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/ipsd0s1d    9.7G    2.5G    6.4G    28%    /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.


Cevap