ОС CentOS 6.7; Apache/2.2.15; nginx/1.13.5
Симтомы: Рост количество процессов httpd, при значении примерно в 2250 – сервер падает в 502 ошибку.
Смотрим:
lynx http://localhost/server-status
Инструмент: Apache Server Status Vizualization
Видим очень большие значения SS в статусе W Sending Reply.
Ищем, чем заняты процессы:
# strace -p 18404 Process 18404 attached wait4(18772, ^CProcess 18404 detached# strace -p 18772 Process 18772 attached restart_syscall(<... resuming interrupted call ...>) = 0 poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout) poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout) poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) poll([{fd=29, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000^CProcess 18772 detached # lsof -p 18772 -ad 29 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd.itk 18772 domain_user 29u IPv4 14414303 0t0 TCP domain.com:54646->static.9.20.40.188.clients.your-server.de:http (ESTABLISHED)
Далее идем искать что php-скрипты с сервера запрашивают с static.9.20.40.188.clients.your-server.de
Как искать… всеми известными способами.
Нашли ….:
/**. * Function TWS_INC_SALESDOUBLER_order_success **/ function TWS_INC_SELLACTION_order_success($mOrderId, $mAmount) { if (isset($_COOKIE[SELLACTION_COOKIE_NAME])) { $mOrderId = 99999 + $mOrderId; $url = "http://sellaction.net/reg.php?id=".$_COOKIE[SELLACTION_COOKIE_NAME].'-'.SELLACTION_TARIFF_ID.'_'.$mAmount.'&order_id='.$mOrderId; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => $url )); $resp = curl_exec($curl); curl_close($curl); } }
Вот он наш виновик! Удаляем/отключаем.