Почему возникает ошибка 104 "Connection reset by peer" в сети?

Как можно оптимизировать конфигурацию nginx для устранения ошибок, таких как "recv() failed (104: Connection reset by peer)" и "connect() failed (110: Connection timed out)", а также проблемы с worker_connections, несмотря на увеличение их количества? Где в конфигурации могут быть ошибки или излишняя нагрузка?
  • 2 августа 2024 г. 14:13
Ответы на вопрос 2
Ошибка 104 "Connection reset by peer" означает, что удаленный сервер (peer) принудительно разорвал соединение. Это может произойти по разным причинам, например, из-за проблем сети, перегрузки сервера, неверной конфигурации или проблем на стороне клиента.

Чтобы оптимизировать конфигурацию nginx и избежать ошибок связанных с соединениями, можно принять следующие шаги:

1. Увеличить значение параметра worker_connections в файле конфигурации nginx. Этот параметр определяет сколько соединений может обрабатывать каждый воркер nginx параллельно. Увеличив его значение, вы можете увеличить количество одновременных соединений, которые сервер способен обрабатывать.

Пример:
```
worker_connections 1024;
```

2. Проверить настройки keepalive_timeout и keepalive_requests. Эти параметры определяют, сколько времени будет активно удерживаться открытое соединение и сколько запросов может быть отправлено по этому соединению. Неправильные значения этих параметров могут привести к ошибкам "Connection reset by peer".

Пример:
```
keepalive_timeout 60s;
keepalive_requests 100;
```

3. Проверить настройки TCP_KEEPALIVE. Эти параметры позволяют отправлять пакеты keepalive для поддержания открытого соединения. Настройте значения под свои потребности и конкретные требования вашего приложения.

Пример:
```
tcp_keepalive_time 60;
tcp_keepalive_intvl 10;
tcp_keepalive_probes 3;
```

4. Отслеживать логи ошибок и доступа в nginx, чтобы выявить потенциальные проблемы. Обратите внимание на любые предупреждения или ошибки, которые могут указывать на проблемы соединения.

5. Провести тестирование и мониторинг нагрузки сервера, чтобы определить возможные узкие места и проблемы производительности. Регулярно анализируйте метрики производительности сервера и настраивайте конфигурацию в соответствии с ними.

Путем тщательного анализа и настройки параметров конфигурации nginx вы сможете уменьшить вероятность возникновения ошибок связанных с соединениями и улучшить производительность вашего сервера.
Я не уверен, но. 

У вас за nginx стоит какой-то другой сервер, php-fpm например или еще что-то.
104: Connection reset by peer - означает, что процесс php завершился по таймауту, слишком долго обрабатывал запрос, т.е. php работал работал, затем вышло время обработки 1 запроса, и php процесс завершился, не успев отдать ответ. Но коннекшн к php был, и ему запрос был передан.
110: Connection timed out - означает, что воркеров php-fpm совсем не хватило, и сервер php даже не смог принять запрос, потому что не было свободных воркеров. Nginx пытался пытался подключиться к php, но не смог, и запрос php не был передан, т.к. у php просто закончились все воркеры.

Необходимо смотреть логи того сервера, которому nginx передает дальше запрос.
Похожие вопросы