【问题标题】:PHP-FPM and Nginx: "Resource temporarily unavailable" errors in proxy_error_logPHP-FPM 和 Nginx:proxy_error_log 中的“资源暂时不可用”错误
【发布时间】:2017-02-10 15:41:43
【问题描述】:

我发现了以下 4 年前发布的讨论:502 Gateway Errors under High Load (nginx/php-fpm)

有人遇到与我类似的问题,但不幸的是,我相信他收到的配置是针对他自己的服务器规格定制的,我无法在我的服务器上使用相同的配置。无论如何,我想自己提出我遇到的问题,而不仅仅是告诉您转到我发送的链接并阅读其他人的问题。

对于我自己的故事 - 我有一个很大的社交媒体页面,我在其中发布指向我的网站文章的链接,这意味着我在一天中每次分享内容时都会遇到大量流量高峰。最近我注意到该站点太慢,有时根本无法加载,不幸的是,我对解决此类问题不是很熟悉,而且我没有系统管理员来管理我的专用服务器,因为我是从 OVH 租用的它以低成本提供非托管服务器。服务器的规格非常好,即使站点上有 100 个活跃用户,也会出现此问题。我还可以在我的服务器日志中看到一些错误。

服务器规格如下:

AMD Opteron(tm) 处理器 4334、AMD Opteron(tm) 处理器 4334(6 核)

SoftRaid 3x160GB SSD

32GB 内存

1Gbps 连接

CentOS x64 Linux 版本 7.2.1511(核心)

Plesk v12.5.30


我所说的错误:

proxy_error_log

2016/10/02 09:49:36 [error] 6931#0: *469804 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2607:5300:60:5e68::, server: ###.com, request: "POST /wp-cron.php?doing_wp_cron=1475416176.6522459983825683593750 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/wp-cron.php?doing_wp_cron=1475416176.6522459983825683593750"
2016/10/02 09:49:36 [error] 6931#0: *469806 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2607:5300:60:5e68::, server: ###.com, request: "POST /wp-cron.php?doing_wp_cron=1475416176.8384990692138671875000 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/wp-cron.php?doing_wp_cron=1475416176.8384990692138671875000"
2016/10/02 09:49:38 [error] 6931#0: *469826 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 73.77.251.156, server: ###.com, request: "GET /###/ HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://m.facebook.com/"
2016/10/02 09:49:38 [error] 6931#0: *469830 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 217.123.129.73, server: ###.com, request: "GET /###/ HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://m.facebook.com/"
2016/10/02 09:49:39 [error] 6931#0: *469840 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2607:5300:60:5e68::, server: ###.com, request: "POST /wp-cron.php?doing_wp_cron=1475416179.1317949295043945312500 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/wp-cron.php?doing_wp_cron=1475416179.1317949295043945312500"
2016/10/02 09:49:39 [error] 6931#0: *469842 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2605:6001:f08a:3400:88d6:8b94:4499:8e36, server: ###.com, request: "GET /###/ HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://m.facebook.com/"
2016/10/02 09:49:39 [error] 6931#0: *469845 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 162.158.75.61, server: ###.com, request: "GET /###/ HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://m.facebook.com/"
2016/10/02 09:49:39 [error] 6931#0: *469847 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2607:5300:60:5e68::, server: ###.com, request: "POST /wp-cron.php?doing_wp_cron=1475416179.6054229736328125000000 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/wp-cron.php?doing_wp_cron=1475416179.6054229736328125000000"
2016/10/02 09:49:39 [error] 6931#0: *469849 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2607:5300:60:5e68::, server: ###.com, request: "POST /wp-cron.php?doing_wp_cron=1475416179.6478641033172607421875 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/wp-cron.php?doing_wp_cron=1475416179.6478641033172607421875"
2016/10/02 09:49:39 [error] 6931#0: *469851 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2601:81:4203:1bce:5809:b94c:4616:4730, server: ###.com, request: "POST /wp-admin/admin-ajax.php HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://www.###.com/###/"
2016/10/02 09:49:40 [error] 6931#0: *469853 connect() to unix:///var/www/vhosts/system/###.com/php-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 2602:306:8b97:11a0:6843:ad77:251e:864a, server: ###.com, request: "GET /###/ HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/###.com/php-fpm.sock:", host: "www.###.com", referrer: "http://m.facebook.com/"

我有很多这样的^


我现在将附上我的一些配置文件,就像我链接到的另一个线程中的人所做的那样,所以你会对我的服务器上发生的事情有所了解。

php-fpm.conf

include=/etc/php-fpm.d/*.conf

[global]
pid = /run/php-fpm/php-fpm.pid
error_log = /var/log/php-fpm/error.log
daemonize = no

/etc/php-fpm.d/www.conf

[www]

listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = apache
group = apache
pm = dynamic
pm.max_children = 250
pm.start_servers = 20
pm.min_spare_servers = 20
pm.max_spare_servers = 35
pm.max_requests = 500
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
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

/etc/php-fpm.d/###.com.conf

[###.com]
prefix = /var/www/vhosts/system/$pool
user = ###
group = psacln

listen = php-fpm.sock
listen.owner = root
listen.group = psaserv
listen.mode = 0660

chdir = /

pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 10s
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1

catch_workers_output = yes

php_value[max_input_time] = 60
php_value[max_execution_time] = 60
php_value[memory_limit] = 128M
php_value[open_basedir] = none

sysctl.conf

net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
net.core.somaxconn = 4096
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_syncookies = 1

/etc/nginx/nginx.conf

worker_processes  1;

include /etc/nginx/modules.conf.d/*.conf;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server_tokens off;
    include /etc/nginx/conf.d/*.conf;
}

# override global parameters e.g. worker_rlimit_nofile
include /etc/nginx/*global_params;

/etc/security/limits.conf没有配置,里面只有cmets。


这些是以下命令的结果:

ulimit -n
1024

ulimit -Sn
1024

ulimit -Hn
4096

cat /proc/sys/fs/file-max
3266168

free -m
              total        used        free      shared  buff/cache   available
Mem:          32089        1284        3784        1718       27020       28936
Swap:          1532           1        1531

关于 fastcgi_params - 我不知道在 Plesk 上哪里可以找到这个。我只能找到一个包含我不知道其值的变量的文件。 例如这些行(这就是整个文件的样子):

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

如果有什么遗漏,我很抱歉,我确实尽力让它尽可能详细,而且使用 Plesk 查找配置文件的位置也不容易。我必须对上面附加的每个文件进行一些研究...(说实话,这是我不喜欢 Plesk 的原因之一,但这就是我的 atm)

如果您还有其他需要我发送的配置文件,请告诉我,我会附在 cmets 中。还请告诉我在哪里可以找到它们(考虑到我使用的是 Plesk v12.5)。 根据我的需要和规格正确配置服务器并消除错误对我来说非常重要,所以请帮助我。 :)

谢谢!

【问题讨论】:

    标签: php linux apache nginx centos


    【解决方案1】:

    我也有这个问题。重新启动 fpm 修复它

    sudo service php7.1-fpm restart

    更改php版本。

    【讨论】:

    • 当什么都不起作用时,有时重新启动服务可能会起作用。但这不是正确的解决方案。应该找到问题的根源并解决它。
    • 为我工作的所有其他解决方案都失败了
    • 不是生产中可接受的解决方案。
    • 通过简单地重新启动 fpm 你并没有解决问题你只是掩盖它不是最好的举动真的
    【解决方案2】:

    尝试增加你的 php-fpm 孩子数量,例如这样:

    pm.max_children = 30
    pm.start_servers = 10
    pm.min_spare_servers = 3
    pm.max_spare_servers = 15
    

    那么突然的流量高峰不会产生错误

    【讨论】:

    • 你确定吗?是的,这降低了出错的机会,但它们会突然消失吗?如果我将您的服务器置于 真正 高负载下,您的解决方案是否仍然有效?此外,OP 询问将配置放在哪里
    • 这取决于服务器CPU,需要测试当然大的pm.max_children会增加cpu消耗参数去/etc/php-fpm.d/###.conf
    • This article 解释了如何根据应用的需求和服务器规格确定正确的 max_children 数量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2017-08-23
    • 2016-11-19
    • 2012-03-07
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多