错误502 502badgateway解决办法
环境:Ubuntu 16.04.2
nginx version: nginx/1.10.3 (Ubuntu)
【错误502 502badgateway解决办法】

文章插图
php-fpm version: php-fpm/5.6
php-fpm错误日志WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
Nginx错误日志eader from upstream, client: xxx.xxx.xxxx.xxx, server: xxx.domain.com, request: "GET /index.php/1/2/test.html HTTP/1.0", upstream: "fastcgi://unix:/run/php/php5.6-fpm.sock:", host: "xxx.domain.com", referrer: "http://xxx.domain.com./index.php/1/2/test.html?filter_limit=100"
从Nginx日志里面很容易看出来,是php-fpm出了问题 , 重启php-fpm后网站恢复正常 。php-fpm日志里面给出了详细的错误提示,子进程数已经达到设置的最大值 。
解决方案/etc/php/5.6/fpm/php-fpm.conf
...
...
pm:表示使用那种方式,有两个值可以选择,就是static(静态)或者dynamic(动态) 。
在更老一些的版本中,dynamic被称作apache-like 。这个要注意看配置文件的说明 。
下面4个参数的意思分别为:
pm.max_children:静态方式下开启的php-fpm进程数量
pm.start_servers:动态方式下的起始php-fpm进程数量
pm.min_spare_servers:动态方式下的最小php-fpm进程数
pm.max_spare_servers:动态方式下的最大php-fpm进程数量
区别如果dm设置为 static,那么其实只有pm.max_children这个参数生效 。系统会开启设置数量的php-fpm进程 。
如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效 。
系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数
关于数量的计算方法可以通过memory_get_peak_usage(true)这个函数获得内存峰值,以此作为单个请求的程序内存消耗消耗量,并考虑进php-fpm本身的基础内存消耗 , 可以得到一个近似的单进程内存消耗量 。
- 对错误的人|4件事让人懂得:“任何时候,都别高估自己”
- 震中|疫情震中仍在美洲 世卫提醒一些国家走在错误的方向
- 世卫|疫情震中仍在美洲 世卫警告太多国家走上错误道路
- 病例|全球新冠肺炎病例超1300万 世卫称:一些国家走在错误方向
- 员工|亚马逊命令员工删除TikTok又撤回 让员工删除TikTok是邮件发送错误
- 林允儿|李孝利林允儿为没戴口罩道歉 已深刻反省错误
- 媒体|李兰娟辟谣病毒活20年 媒体未完全理解解读错误
- 名义|人民的名义:陈岩石清廉为官,却在这3个细节上,犯了低级错误!
- 人生|我们必须要明白,不要用别人的错误,来惩罚自己的人生
- 为此|我为一个错误和一句愚蠢的话担心了很长一段时间,我将为此而赴汤蹈火