docker 部署 php-fpm nginx 502 (Resource temporarily unavailable)

docker php-fpm Resource temporarily unavailable

环境:

nginx + php-fpm
centos xxx
docker xxx

前提是php-fpm 走的是socket,tcp不用有这问题

切入docker 用ab 压测300  发现有失败的请求nginx erro:
2020/06/17 17:49:11 [error] 23#0: *14896 connect() to unix:/dev/shm/php-cgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream, 
client: 172.17.0.1, server: _, request: "GET / HTTP/1.0", upstream: "fastcgi://unix:/dev/shm/php-cgi.sock:", host: "127.0.0.1:9999"

查看:cat /proc/sys/net/core/somaxconn

解决方式:

找了一堆文档没找到与docker有关的Resource temporarily unavailable

1、docker run --sysctl net.core.somaxconn=32768 nginx-php-fpm
2、php-fpm  listen.backlog =-1  或者 32768

##-1表示 用系统的 值 ,
操作系统默认是128
docker默认也是128

如果docker 用的net 是host 不需要设置,是直接走的宿主机的。

net.core.somaxconn是Linux中的一个kernel参数,表示socket监听(listen)的backlog上限。backlog是socket的监听队列,当一个请求(request)尚未被处理或建立时,他会进入backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。当server处理请求较慢,以至于监听队列被填满后,新来的请求会被拒绝。

配置如下说明:

https://docs.docker.com/engine/reference/commandline/run/

docker 部署 php-fpm nginx 502 (Resource temporarily unavailable)

上一篇:nodejs 简单的模拟代理服务器


下一篇:Flask的jsonify模块、json前后端交互数据