|
|
|
| Здравствуйте!
Последнее время часто стало выкидывать ошибку:
502 Bad Gateway
Хотя вроде посещаемость и соответственно нагрузка не поменялась.
Помогает перезапуск php-fpm.
В момент ошибки top показывает нагрузку на цп в районе 60%.
Скриптов сильно нагруженных нет. Всё, что есть срабатывает регулярно, так что скачков нагрузки быть не должно.
phpstatus в штатном режиме показывает:
idle processes: 98
active processes: 4
total processes: 102
max children reached: 0
В момент 502 ошибки увидеть я его не могу, но подозреваю, что резко возрастает active processes до предела.
Софт:
nginx 0.8.54
php5 5.3.5 (php-fpm)
mysql-server 5.5.9
eaccelerator 0.9.6.1
Конфиг PHP-FPM:
pm = dynamic
pm.max_children = 500
pm.start_servers = 75
pm.min_spare_servers = 50
pm.max_spare_servers = 100
pm.max_requests = 1500
(изначально стояло max_children = 200, после увеличения ничего абсолютно не поменялось)
Железо:
CPU Intel(R) Xeon(R) CPU E5649 @ 2.53GHz (6 ядер)
ОЗУ 32 Гб
Жесткий диск 10000 об/мин
Может ддос какой? Как понять, из-за чего проблема? | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 18:33)
| | Вот удалось поймать в момент 502
process manager: dynamic
accepted conn: 271464
idle processes: 0
active processes: 500
total processes: 500
max children reached: 2 | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 19:30)
| | Пиковый скачок (спящие процессы можно не смотреть) - у вас в Apache скорее всего выделено 500 процессов, все они разом оказываются задейстованы, вызывая отказ от обслуживания (DDOS). | |
|
|
|
|
|
|
|
для: cheops
(29.09.2011 в 20:27)
| | Ну это ясно. Кстати nginx, а не apache | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 18:33)
| | Очень похоже на DDoS
Сейчас перезагрузка не помогает
увеличил процессы до 2000, в течении пары секунд они тоже забились и снова 502.
Что делать? | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 19:45)
| | А в логах что? Кто дергает сервер, с каких IP-адресов? Может это не DDOS, а просто какой-то неуемный робот, которого не сложно отключить? | |
|
|
|
|
|
|
|
для: cheops
(29.09.2011 в 20:28)
| | Да вот как там разобраться, записей очень много, сайт посещаемый. Может есть какой удобный способ выделить наиболее активных? | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 20:59)
| | В первую голову посчитатей количество хостов, посчитайте скольким хостам соответствуют хиты, отсортируйте хосты по количеству хитов. Возьмите интервал в районе интенсивного появления 502 ошибки и посмотрите кто там в основном шурует, в каком диапазоне находятся хосты - в топах или разбросаны по единичным обращениям. В общем нужно провести ковровый анализ и попытаться выяснить столько закономерностей, сколько удастся. По странам постарайтесь разбросать IP-адреса, может вас какой-нибудь Уругвай досит и его можно безболезненно отсечь, сняв проблему. | |
|
|
|
|
|
|
|
для: cheops
(29.09.2011 в 23:00)
| | Ясно. Какие-то используемые готовые инструменты для этого есть?
Или своё придётся писать? | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 23:44)
| | Я всегда свое пишу (формат логов может незначительно отличаться от сервера к серверу) - там не очень большой скрипт получается, особенно если использовать регулярные выражения. Если возникнут сложности, обращайтесь, чем сможем поможем. | |
|
|
|
|
|
|
|
для: 3D-GRAF
(29.09.2011 в 18:33)
| | А откуда столько спящих процессор (idle)? У вас что-то через PHP-скрипты скачивается или используется mysql_pconnect()? Или это просто системные скрипты? Посмотрите через top или ps, кто в основном спит (есть среди них httpd или mysqld)? | |
|
|
|
|
|
|
|
для: cheops
(29.09.2011 в 20:24)
| | Так а какими им быть? Я так понимаю все, что не активны, являются спящими. А раз изначально их 75, а активных меньше, остальные соответственно спят.
А так ничего не скачивается, pconnect не используется, да и вобще длительных скриптов нет | |
|
|
|