У нас есть веб-сервер с 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/