Назад | Перейти на главную страницу

это нормально для NGINX накапливать соединения в состоянии записи?

Это график, показывающий количество подключений из stab_status nginx, падения на графике - это перезапуски сервера, выполненные вручную.

Я нахожу это поведение странным, похоже на утечку. Я думаю, что есть зависшие соединения, которые следует закрыть, но они остаются в состоянии записи.

Это нормально? Должен ли я действовать? Если да, то в каком направлении?

Я попытался изменить поддержку активности nginx, а затем некоторые настройки ядра, подобные этим https://gist.github.com/perusio/2154235

Но это поведение не изменилось.

Сервер представляет собой VPS с одним доступным процессором и оперативной памятью 1024 МБ.

EDIT1: версии

Версия nginx: nginx / 1.6.2 построен с помощью gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1) Поддержка TLS SNI включает аргументы конфигурации: --add-module = / root / ngx_pagespeed-release-1.9.32.3-beta --prefix = / etc / nginx --conf-path = / etc / nginx / nginx.conf --error-log-path = / var / log / nginx / error.log --http-client-body-temp-path = / var / lib / nginx / body --http-fastcgi-temp-path = / var / lib / nginx / fastcgi --http-log-path = / var / log / nginx / access.log --http-proxy-temp -path = / var / lib / nginx / proxy --http-scgi-temp-path = / var / lib / nginx / scgi --http-uwsgi-temp-path = / var / lib / nginx / uwsgi --lock -path = / var / lock / nginx.lock --pid-path = / var / run / nginx.pid --with-pcre-jit --with-http_ssl_module --without-mail_pop3_module --without-mail_smtp_module --without -mail_imap_module --without-http_scgi_module --with-ipv6 --with-http_stub_status_module --sbin-path = / usr / sbin / nginx --with-http_spdy_module

Обратите внимание, что он запускает ngx_pagespeed

EDIT2: Подробнее

Nginx работает как обратный прокси для приложения uwsgi / django. Я буду следить за uwsgi и опубликую результаты, чтобы лучше понять, есть ли у uwsgi чем заняться.

Если некоторые из ваших серверов используют SPDY или HTTP/2, ваша проблема коренится в дефекте интеграции этих протоколов. Вы можете посмотреть в Билет nginx №714.

Текущий статус:

Есть как минимум одна утечка в соединении HTTP/2 как исправлено в nginx 1.11.3, и исправление еще не доступно в 1.10.x. Попробуйте вместо этого 1.11.x.

Это кажется нормальным поведением, так как всегда будут клиенты с ненадежным соединением, оставляющие соединения сервера в состоянии «отправки». Они больше не читают данные, но Nginx все равно будет ждать, пока send_timeout перед закрытием соединения.

Это также могут быть атаки, при которых злонамеренные клиенты намеренно делают это, чтобы исчерпать доступные соединения и файловые дескрипторы сервера, поэтому, если это становится реальной проблемой, вам следует попробовать снизить значение, указанное выше.

Как описано в документация модуля stub_status, соединение в состоянии записи означает:

Writing

Текущее количество соединений, в которых nginx отправляет ответ клиенту.

Поэтому вам следует изучить время отклика вашего сервера и выяснить, почему вашим клиентам требуется так много времени, чтобы получить ответы nginx и затем закрыть соединение: медленная сеть, большие объемы данных, фрагментированное кодирование передачи, веб-сокеты ...