Здравствуйте
Жил да был WEB-сервер (Server Version: Apache/1.3.12 (Unix) PHP/4.0.6
PHP/3.0.18 mod_ssl/2.6.6 OpenSSL/0.9.5a rus/PL29.7) под FreeBSD
(периодически до -STABLE доводится, сейчас вот уже 4.5) на 2xPiii-500,
1G ram. Уже несколько лет жил, и причем неплохо жил. Крутятся там
несколько проектов, в основном на php + mysql (3.23.42, тоже иногда
обновляется). Подключен хоть и к хорошему каналу, но через 10Мбитный
сосок, причем на сегменте еще штук 5 машинок сидят.
И вот некоторые ресурсы стали приобретать кое-какую популярность,
пошла вроде как нагрузка. Причем стандартная нагрузка то вроде как не
сильная, все живет, даже можно сказать "летает". mysql processlist ~100
штук показывает. Процессов около 100 спят. нагрузка 0.87 (при том что
у двухпроцессорной тачки 100% = 2.00) Память есть свободная, в свопе -
копейки. Но вот в последнее время стали происходить "затыки". Вначале
реденько, а сейчас раза 3-4 в неделю, причем запросто может 2 раза в
день произойти.
Например живет там чат (не рефрешевый, а такой который постоянно
что-то шлет, и соответственно демона поднятого держит. Но много народу
не бывает - обычно человек 30-50). Сидишь, значит, болтаешь и тут
дынсь! Стопор. Лезешь на остальные ресурсы - тишина... молчание...
Пинг ходит прекрасно. ssh -C хоть и с трудом, но пробивается. Но как
зашел - тормоза ! По букве в минуту успеваешь набрать. Смотрю топ:
1мин average под 10, хотя 15минутный еще чистенький.
Висят 600 процессов, штук 50 зомбей, в свопе 200 метров лежит (хотя и
свободная память есть). mysql processlist около 600 строк кажет,
многие в lock state. Труба короче полная. Приходится делать:
# apachectl stop; apachectl start_off; # последний говорит ЖДИТЕ! :)
# mysqladmin shutdown; /usr/local/etc/rc.d/mysql-server.start
при загрузке mysqlя базы на всякий случай чекаются myisamcheck
# apachectl stop; apachectl startssl
и все опять здорово и замечательно до поры до времени...
предполагаю что дело в локах и пконнектах, но почему тогда это не
постоянно так ? ЧТо делать, ума не париложу. Увеличение мощьности
компутера, думаю проблему не решит, ибо в принципе ее хватает.
Вот привожу всякие логи и конфиги, в надежде что мне помогут :)
/server-status (через 5 часов после последнего затыка:)
Current Time: Thursday, 31-Jan-2002 22:07:42 NOVT
Restart Time: Thursday, 31-Jan-2002 16:49:21 NOVT
Parent Server Generation: 1
Server uptime: 5 hours 18 minutes 21 seconds
Total accesses: 239432 - Total Traffic: 391.9 MB
CPU Usage: u499.141 s175.117 cu117.523 cs251.148 - 5.46% CPU load
12.5 requests/sec - 21.0 kB/second - 1716 B/request
50 requests currently being processed, 4 idle servers
-------------------------------
# mysqladmin status (через 5 часов после последнего затыка:)
Uptime: 22013 Threads: 66 Questions: 1483988 Slow queries: 531 Opens: 1180
Flush tables: 1 Open tables: 1174 Queries per second avg: 67.414
--------------------------------
# mysqladmin processlist|wc -l
81
--------------------------------
# top (через 5 часов после последнего затыка:)
last pid: 76031; load averages: 0.84, 0.87, 0.95 up 1+03:14:07 22:14:02
124 processes: 5 running, 118 sleeping, 1 zombie
CPU states: 44.5% user, 0.0% nice, 28.1% system, 0.2% interrupt, 27.1% idle
Mem: 283M Active, 512M Inact, 171M Wired, 35M Cache, 112M Buf, 3428K Free
Swap: 2048M Total, 43M Used, 2005M Free, 2% Inuse
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND
84905 mysql 49 0 466M 56288K CPU0 0 116:34 35.60% 35.60% mysqld
231 root 4 0 3660K 2260K bpf 1 97:37 8.84% 8.84% trafd
75926 root 28 0 2072K 1140K CPU1 0 0:01 2.39% 1.37% top
70630 apache 2 0 19592K 12944K sbwait 1 0:11 1.22% 1.22% httpd
64611 apache 2 0 19936K 13308K sbwait 1 0:20 0.93% 0.93% httpd
---------------------------------
MRTG за неделю (раза 4 были затыки :( Тут это видать :)
CPU Weekly:
Макс.Вх:1993.0 CPU/sec(996.5%) Ср.Вх:121.0 CPU/sec(60.5%) Тек.Вх:112.0 CPU/sec(56.0%)
Макс.Исх: 0.0 CPU/sec (0.0%) Ср.Исх: 0.0 CPU/sec (0.0%) Тек.Исх: 0.0 CPU/sec (0.0%)
MySQL Weekly
Макс. Questions/5m: 35845 Ср.Questions/5m: 15197 Текущий Q/5m: 13703
Макс. Threads: 768 Ср.Threads: 85 Текущий Threads: 77
трафик на fxp0 Weekly
Макс.Вх: 180.9 kb/s(1.8%) Ср.Вх: 45.9 kb/s(0.5%) Тек.Вх: 49.0 kb/s(0.5%)
Макс.Исх: 740.0 kb/s(7.4%) Ср.Исх: 179.4 kb/s(1.8%) Тек.Исх: 169.9 kb/s(1.7%)
-----------------------------------
httpd.conf
Timeout 300
KeepAlive On
MaxKeepAliveRequests 250
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 500
MaxRequestsPerChild 0
--------------------------------
php.ini
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = 300
mysql.max_links = 600
-------------------------------------
my.cnf
[mysqld]
skip-locking
set-variable = key_buffer=384M
set-variable = max_allowed_packet=1M
set-variable = max_connections=700
set-variable = table_cache=512
set-variable = wait_timeout=60
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = thread_cache=8
set-variable = thread_concurrency=4
set-variable = myisam_sort_buffer_size=64M
С уважением, Алексей Русанов
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.