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

Ошибки подключения tcp / ip

У нас есть веб-сервер с 128 ГБ оперативной памяти, 32 виртуальных ЦП на Ubuntu 16.04. Он запускает приложения nginx, php-fpm, postgresql, mysql и beanstalkd.

Веб-сервер выдает некоторые ошибки подключения от разных приложений при высокой пропускной способности трафика. В обычное время все в порядке.

Postgresql:

 [PDOException]
  SQLSTATE[08006] [7] could not connect to server: Connection timed out
        Is the server running on host "127.0.0.1" and accepting
        TCP/IP connections on port 5432?

MySQL:

 [PDOException]
  SQLSTATE[HY000] [2002] Connection timed out

Beanstalkd:

fwrite(): send of 8192 bytes failed with errno=32 Broken pipe

Какие настройки сервера (возможно, sysctl.conf) влияют на эти ограничения? Как я могу увеличить эти лимиты, чтобы избежать ошибок?

Ой, если у вас много подключений к этому серверу, вы можете начать отслеживать количество подключений, которые имеет хост-сервер. Если вы превысите лимит, встроенный в ядро ​​Linux для разрешенного количества подключений, вы можете увидеть сбои подключения в часы пик. В журнале ядра вы можете увидеть такие строки, как

nf_conntrack: table full, dropping packet

Чтобы увидеть ограничение на количество подключений:

sysctl net.ipv4.netfilter.ip_conntrack_max

Чтобы увидеть количество текущих подключений

wc -l /proc/net/ip_conntrack

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

Для увеличения этого лимита (не сохраняется при перезагрузке)

sysctl -w net.ipv4.netfilter.ip_conntrack_max=12000

Либо добавьте следующую строку в файл /etc/sysctl.conf, чтобы сохранить этот параметр при перезагрузке:

net.ipv4.netfilter.ip_conntrack_max=12000

Я рекомендую инструменты conntrack, предоставляемые http://conntrack-tools.netfilter.org/

sudo apt-get install conntrack 

Этот инструмент позволит вам увидеть список подключений (-L), счетчик (-C) и статистику, включая потерянные пакеты (-S).

Полезная ссылка: https://www.cyberciti.biz/faq/ip_conntrack-table-ful-dropping-packet-error/