У меня есть cron, который запускает файл bash, и этот файл bash одновременно открывает около 1000 PHP-скриптов, каждый из этих PHP-скриптов устанавливает соединение с MySQL. Через некоторое время я вижу периодически возникающие ошибки MySQL, такие как:
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (4)
Я понял, что ошибка (4) — уровень ОС (прерванный системный вызов).
в /var/log/messages/
много kernel: nf_conntrack: table full, dropping packet
сообщения, я не знаю, связано ли это с этой проблемой.
Может ли кто-нибудь помочь мне?
Короче говоря, ваш сервер занят, вы достигли максимально разрешенных соединений.
Чтобы исправить это, увеличьте максимальный предел настроенных соединений
# Temporarily Solution
echo 524288 > /proc/sys/net/netfilter/nf_conntrack_max# Permanent Solution
# Add following line on /etc/rc.d/rc.local
$ vim /etc/rc.d/rc.local
echo 524288 > /proc/sys/net/netfilter/nf_conntrack_max
отредактированный
более простой способ сделать это
/etc/sysctl.conf файл.
Откройте ssh / term с правами root и добавьте строку в
Файл /etc/sysctl.conf как:
net.netfilter.nf_conntrack_max = 65536
и сохраните файл, затем введите:
sysctl -p
Других решений пока нет …