Подключиться к unix:/var/run/php5-fpm.sock не удалось. Что не так с моей настройкой?

У меня 2 ГБ VPS на DigitalOcean, и я размещаю WordPress 3.9.1 под Debian 7 с NGINX, php-fpm и unix-сокетом.

Он работал отлично до последней недели, когда он начал показывать ошибку "502 bad gateway". Я проверил журналы и обнаружил, что:

Журнал php5-fpm показывает, что pm.max_children было достигнуто и В журнале nginx отображается следующее:

[ошибка] 3239 # 0: * 15188 connect() для unix:/var/run/php5-fpm.sock failed (11: ресурс временно недоступен) при подключении к восходящему потоку, клиент: xxx.xxx.xxx.xxx, server: my.domain, request: "POST/xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "xxx.xxx.xxx.xxx"

Я вручную поменял pm с разными настройками без везения. Я всегда перезапускаю демонов после каждого изменения.

Настройки

pm:

pm = dynamic 
pm.max_children = 100 
pm.start_servers = 10 
pm.min_spare_servers = 10 
pm.max_spare_servers = 10 
pm.max_requests = 200

www.conf имеет функцию listen =/var/run/php5-fpm.sock.

Кто-нибудь со сходным опытом?

Ответы

Ответ 1

Первая проблема заключается в том, что вы задаете 100 max_children, что очень велико для 2GB. Я бы бросил его на 25 детей. См. Мой пост здесь о том, как оптимизировать конфигурацию php-fpm для вашей установки:

ПРЕДУПРЕЖДЕНИЕ: [pool www] кажется занятым (вам может потребоваться увеличить pm.start_servers или pm.min/max_spare_servers), нереститься

Кроме того, использование сокетов unix выполняется немного быстрее, поскольку обеспечивает прямой доступ к сети без каких-либо издержек TCP/IP. С нижней стороны он не так масштабируемо, как TCP/IP. Nginx сбросит 502 ошибки, когда сокеты будут исчерпаны. В этом случае вы можете настроить настройки ОС для размещения большего пула подключений или просто переключиться на TCP/IP.

В вашем fastcgi conf change:

fastcgi_pass unix:/var/run/php5-fpm.sock;

в

fastcgi_pass 127.0.0.1:9000;

Обратите внимание, что порт 9000 является портом по умолчанию, установленным в php-fpm, если вы изменили php-fpm для прослушивания на другом порту, тогда замените 9000 с этим значением. Убедитесь, что вы перезапустили как php-fpm, так и nginx.

Теперь, если после всего этого вы все равно не сможете заставить его работать, а free -m возвращает высокую память, тогда пришло время добавить больше бара на ваш сервер.