Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: 502 bad gateway
 
 автор: 3D-GRAF   (29.09.2011 в 18:33)   письмо автору
 
 

Здравствуйте!

Последнее время часто стало выкидывать ошибку:
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 в 19:30)   письмо автору
 
   для: 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

  Ответить  
 
 автор: cheops   (29.09.2011 в 20:27)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 19:30)
 

Пиковый скачок (спящие процессы можно не смотреть) - у вас в Apache скорее всего выделено 500 процессов, все они разом оказываются задейстованы, вызывая отказ от обслуживания (DDOS).

  Ответить  
 
 автор: 3D-GRAF   (29.09.2011 в 20:58)   письмо автору
 
   для: cheops   (29.09.2011 в 20:27)
 

Ну это ясно. Кстати nginx, а не apache

  Ответить  
 
 автор: 3D-GRAF   (29.09.2011 в 19:45)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 18:33)
 

Очень похоже на DDoS
Сейчас перезагрузка не помогает
увеличил процессы до 2000, в течении пары секунд они тоже забились и снова 502.
Что делать?

  Ответить  
 
 автор: cheops   (29.09.2011 в 20:28)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 19:45)
 

А в логах что? Кто дергает сервер, с каких IP-адресов? Может это не DDOS, а просто какой-то неуемный робот, которого не сложно отключить?

  Ответить  
 
 автор: 3D-GRAF   (29.09.2011 в 20:59)   письмо автору
 
   для: cheops   (29.09.2011 в 20:28)
 

Да вот как там разобраться, записей очень много, сайт посещаемый. Может есть какой удобный способ выделить наиболее активных?

  Ответить  
 
 автор: cheops   (29.09.2011 в 23:00)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 20:59)
 

В первую голову посчитатей количество хостов, посчитайте скольким хостам соответствуют хиты, отсортируйте хосты по количеству хитов. Возьмите интервал в районе интенсивного появления 502 ошибки и посмотрите кто там в основном шурует, в каком диапазоне находятся хосты - в топах или разбросаны по единичным обращениям. В общем нужно провести ковровый анализ и попытаться выяснить столько закономерностей, сколько удастся. По странам постарайтесь разбросать IP-адреса, может вас какой-нибудь Уругвай досит и его можно безболезненно отсечь, сняв проблему.

  Ответить  
 
 автор: 3D-GRAF   (29.09.2011 в 23:44)   письмо автору
 
   для: cheops   (29.09.2011 в 23:00)
 

Ясно. Какие-то используемые готовые инструменты для этого есть?
Или своё придётся писать?

  Ответить  
 
 автор: cheops   (30.09.2011 в 10:37)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 23:44)
 

Я всегда свое пишу (формат логов может незначительно отличаться от сервера к серверу) - там не очень большой скрипт получается, особенно если использовать регулярные выражения. Если возникнут сложности, обращайтесь, чем сможем поможем.

  Ответить  
 
 автор: cheops   (29.09.2011 в 20:24)   письмо автору
 
   для: 3D-GRAF   (29.09.2011 в 18:33)
 

А откуда столько спящих процессор (idle)? У вас что-то через PHP-скрипты скачивается или используется mysql_pconnect()? Или это просто системные скрипты? Посмотрите через top или ps, кто в основном спит (есть среди них httpd или mysqld)?

  Ответить  
 
 автор: 3D-GRAF   (29.09.2011 в 21:03)   письмо автору
 
   для: cheops   (29.09.2011 в 20:24)
 

Так а какими им быть? Я так понимаю все, что не активны, являются спящими. А раз изначально их 75, а активных меньше, остальные соответственно спят.
А так ничего не скачивается, pconnect не используется, да и вобще длительных скриптов нет

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования