Ubuntu 11.04, node.js 0.6.16, nginx 1.0.8
Я начал отладку следующей ошибки, которую мы довольно часто регистрировали из внешнего интерфейса при большой нагрузке (~ 3500 пользователей активно долго опрашивают / делают вызовы api):
parsererror:Error: jQuery171045845469435053_1347386706235 was not called",
Все вызовы, вызывающие эту ошибку, представляют собой длинные опросы, проходящие через прокси-сервер nginx на сервер node.js.
Пока это происходит, я вижу, что в следующих местах сервера появляются следующие ошибки:
В /var/log/syslog
Каждые несколько минут я вижу такие всплески:
[6356088.813219] TCP: Possible SYN flooding on port 8894. Sending cookies.
В nginx error.log
, Я вижу несколько более частые всплески следующих двух ошибок:
2012/09/11 18:13:05 [error] 25104#0: *1229679431 upstream timed out (110: Connection timed out) while connecting to upstream,
и
2012/09/11 18:10:38 [error] 25103#0: *1229382210 recv() failed (104: Connection reset by peer) while reading response header from upstream,
================================
Я настроил (среди прочего) следующие параметры системы за последние несколько месяцев, пока наш трафик неуклонно рос:
ulimit
очень высокий (я думаю, 16000) для пользователя, запускающего процессыworker_connections
до 16024sysctl
net.ipv4.tcp_max_syn_backlog
и net.core.somaxconn
до 4096=================================
Похоже, это говорит о том, что сервер node.js некорректно закрывает соединения или принудительно закрывает их системой. Как я могу проверить свою гипотезу?