![NGINX + PHP FPM connect()在连接到上游时失败(110:连接超时)](https://linux22.com/image/576606/NGINX%20%2B%20PHP%20FPM%20connect%EF%BC%88%EF%BC%89%E5%9C%A8%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%8A%E6%B8%B8%E6%97%B6%E5%A4%B1%E8%B4%A5%EF%BC%88110%EF%BC%9A%E8%BF%9E%E6%8E%A5%E8%B6%85%E6%97%B6%EF%BC%89.png)
我们正在使用 nginx 和 PHP-FPM 运行一个相当大的网站,由于网站负载很高,我们遇到了很多错误。我们在连接到上游时收到“connect() 失败(110:连接超时)”...上游:“fastcgi://127.0.0.1:9000”
这是我的 PHP-FPM 配置文件。
PHP-FPM:
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 100
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
对于高流量站点,建议的配置/服务器/子节点数量是多少?
我们尝试使用 Unix 套接字代替 TCP,但未获得明显改善。目前错误为:连接到上游时,connect() to unix:/var/run/php-fcgi.sock 失败(11:资源暂时不可用)...上游:“fastcgi://unix:/var/run/php-fcgi.sock:”...
谢谢,
伦纳德
答案1
使用 unix 套接字,而不是 TCP/IP。因此,您可以执行以下操作:
listen = /tmp/php.sock
如果您不想这样做,请检查您的防火墙规则。如果您使用任何类型的 conntrack 规则,您很容易就会填满该表。查看是否有任何dmesg
关于它的日志消息。您实际上不应该在高负载服务器上使用 conntrack,因此禁用它可能是一个好主意。
另外,请检查您的ulimit
设置。如果打开文件数设置得太低,您可能会遇到问题。