Apacheserver-status w sending reply
ОС CentOS 6.7; Apache/2.2.15; nginx/1.13.5
Симтомы: Рост количество процессов httpd, при значении примерно в 2250 - сервер падает в 502 ошибку.
Смотрим:
Инструмент: Apache Server Status Vizualization
Видим очень большие значения SS в статусе W Sending Reply.
Ищем, чем заняты процессы ( strace):
# 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);
}
}
Вот он наш виновик! Удаляем/отключаем.