У меня есть сайт с nginx, php-fpm, postgresql и pgbouncer, и он работает уже больше года. Вчера сервер перестал отвечать, и после перезагрузки он работал 5 или 10 минут, а после этого не отвечал и то же сообщение об ошибке:
2017/04/04 15:32:37 [ошибка] 2532 # 0: * 31341 FastCGI отправлен в stderr: "Сообщение PHP: Предупреждение PHP: pg_connect (): Невозможно подключиться к серверу PostgreSQL: не удалось подключиться к серверу: Невозможно назначить запрошенный адрес. Работает ли сервер на хосте «127.0.0.1» и принимает ли TCP / IP-соединения через порт 6432? в /usr/share/nginx/html/lib/postgresql.class.php в строке 21
Я даже вернулся к последней рабочей конфигурации, и она все та же (когда я запускаю nginx, он работает в течение минуты или двух после ошибки выше).
Я проверил логи php-fpm и обнаружил следующее:
[04-апр-2017 14:48:50] ПРЕДУПРЕЖДЕНИЕ: [pool www] кажется занятым (вам может потребоваться увеличить pm.start_servers или pm.min / max_spare_servers), порождает 8 дочерних элементов, 0 неактивных и 24 всего дети
и
[04-апр-2017 14:48:59] ПРЕДУПРЕЖДЕНИЕ: сервер [pool www] достиг настройки pm.max_children (50), подумайте над ее повышением
и в журналах postgresql я нашел это:
ПОДСКАЗКА: рассмотрите возможность увеличения параметра конфигурации «max_wal_size».
Я изменил следующие параметры
В php-fpm:
pm.max_childeren from 50 to 100
pm.start_servers from 5 to 10
pm-min_spare_servers from 5 to 10
pm-max_spare_servers from 35 to 100
В Postgresql:
mac_wal_size from 1GB to 2GB
И все равно не повезло !!! что я должен делать?
Здесь у вас мало проблем. Все они вызваны множеством связей.
Вам нужно добавить какой-то мониторинг и проверять, сколько запросов вы получаете. Когда у вас будет несколько цифр, вы сможете правильно настроить все параметры, связанные с подключениями:
Я нашел хороший ответ для pgbouncer: https://dba.stackexchange.com/questions/59650/pgbouncer-works-great-but-occasionally-becomes-unavailable
Я считаю, что это вторая (мониторинг и отсутствие цифр - первое) недостающая часть решения вашей проблемы.
Короче говоря, теперь вы получаете гораздо больше трафика, чем раньше, и ранее работавшей конфигурации недостаточно для его обработки.