Сервер работает под управлением CentOS с веб сервером Apache2.
:Железо : 8 гигабайт памяти, процессор intel два ядра по 2.40GHz, RAID массив на 250 гигабайтПериодически веб сервер начинает создавать сверх высокую нагрузку на сервер.
Закономерности между появлениями нагрузок не найдено.В обычном режиме количество apache процессов: 30-50.
Во время нагрузки количество процессов начинает пропорционально увеличиваться
сначала 100 потом 150 и тд. до тех пор пока я не перезапускаю веб сервер.После перезапуска веб сервера нагрузка падает и все работает в штатном режиме.
Команда netstat в процессе нагрузки не показывает каких либо DDOS атак на веб сервер.
На сервере около 600 сайтов. Особо крупных проектов нет. Самый посещаемый ресурс получает около 1000 уникальных посетителей за сутки.
В файле конфигурации прописывал /usr/local/apache/conf/includes/pre_virtualhost_2.conf
MaxSpareServers 30
MinSpareServers 10
StartServers 30
ServerLimit 200
MaxClients 200
KeepAlive On
KeepAliveTimeout 7
MaxKeepAliveRequests 50
TimeOut 90
MaxRequestsPerChild 500До применения этих параметров веб сервер также периодически зависал.
Версия Apache 2.2
В Apache установлен:
mod_php
mod_bwlimited (учет траффика на виртуальный хост)
eAccelerator
mod_security
mod_status
http://twitpic.com/1alu9r - Вывод top в тот момент когда нагружен серверВопрос: Как определить почему начинает зависать Апач ? Менял настройки в apache - не помогло.
Тюнинговал Mysql - думал что из за его медленной работы apache подвисает выдача страниц - тоже не помогло.
В момент нагрузки на сервер mod_status не позволяет вывести текущие соединения так как все процессы заняты apache.
fscknetstat -m
netstat -Lan
netstat -s -p tcpsysctl vm.zone , если есть
>fsck
>
>netstat -m
>netstat -Lan
>netstat -s -p tcp
>
>sysctl vm.zone , если естьпробывал все кроме fsck. netstat показал что не правильные параметры для команды.
Вчера наблюдал: сервер спокойно держал 70 человек онлайн с load average 0.8
Плюс к этому прочитал что если на сервере есть скрипты, которые работают с сокетами то Апач может зависать.
У меня на сайте есть парочку скриптов, которые читают информеры по принципу file_get_contents(). Причем образаются они к своему же серверу.
Вопрос: Могут ли скрипты такого характера приводить апач в неадкватное состояние ?
>Плюс к этому прочитал что если на сервере есть скрипты, которые работают
>с сокетами то Апач может зависать.Фигня. Либо текст, который вы прочитали, датирован началом 2 тысячелетия. Либо там подразумевались сильно ограниченные настройки системы и апача.
>У меня на сайте есть парочку скриптов, которые читают информеры по
>принципу file_get_contents(). Причем образаются они к своему же серверу.
>
>Вопрос: Могут ли скрипты такого характера приводить апач в неадкватное состояние ?Теоретически могут, если файловая система находится в неадекватном состоянии.
Про netstat - лениво глядеть в ман под линуксом, под рукой только фря, но те 3 команды выдавали инфу по: буферам, активным сокетам и listen queue, общей системной статистике протокола tcp. Почитайте ман, найдите соотв. ключи для netstat под линукс и запустите...
>[оверквотинг удален]
>>принципу file_get_contents(). Причем образаются они к своему же серверу.
>>
>>Вопрос: Могут ли скрипты такого характера приводить апач в неадкватное состояние ?
>
>Теоретически могут, если файловая система находится в неадекватном состоянии.
>
>Про netstat - лениво глядеть в ман под линуксом, под рукой только
>фря, но те 3 команды выдавали инфу по: буферам, активным сокетам
>и listen queue, общей системной статистике протокола tcp. Почитайте ман, найдите
>соотв. ключи для netstat под линукс и запустите...Недавно smartd прислал уведомление что один диск в RAID массиве имеет нечитаемый сектор - заменили диск RAID отребилдили - два дня все тихо было, а потом снова завис Apache.
Попробую пересобрать Apache
Да прочекайте вы свою ФС для начала.
Судя по постам, апач начал висеть до того, как смартд сказал вам о загубленном секторе. Так что не ищите повода для отмазки, пытайтесь найти причину. Иначе можно все железо перебрать, а апач так и будет подвисать.
>Попробую пересобрать ApacheПовторюсь - не ищите повод, ищите причину.