设为首页 收藏本站
查看: 1161|回复: 0

[经验分享] nginx+php-fpm执行一半,502错误

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-11-11 06:30:21 | 显示全部楼层 |阅读模式
  php-fpm.conf
  pm = static  
  pm.max_children = 7  #这个决定了  php-fpm的总进程。我们要想同时响应更多的并发数,这个数值要尽可能大,比如500,1000  
  pm.max_requests =  10000  #并发数越大,这个最大请求数应该越大,并发数小,这个数值也应该越小。它表示,php-fpm进程响应了10000个并发请求之后,就自 动重启一下进程。  
  request_terminate_timeout =  30  #表示等待30秒后,结束那些没有自动结束的php脚本,以释放占用的资源。
  由于服务器只有600M的内存,上面跑了一个并发并不是很大的php应用,当运行一段时间后,发现内存不断增长,其中一部分是PageCache的增长, 这个可以通过echo 3 > /proc/sys/vm/drop_caches  命令来进行有效的释放,另外一个应用内存的增长,且无法释放,通过top命名(输入命名后按m键可按进程占用内存大小的排序)查看,发现大部分内存都被  php-fpm  占用,网上查了一下,大概的意思是说,处理每个php请求完成后,php-fpm会回收内存,但不会释放给操作系统,从而导致大量的内存被php-fpm   占用。网上也提到解决方法,就是调整php-fpm.conf中的pm.max_requests值,pm.max_requests的作用是发送多少个 请求后会重启该线程,从而使其释放占用的内存,默认0,即决不重启。在我的应用把该值设置为250,观察一段时间后,发现还是有好几个php-fpm占用 内存的比例是2.8%左右,效果不理想,可能的原因是请求量大,还是无法达到这个阀值,将其设置为10的时候,发现php-fpm是会不断的重启的。个人 感觉这样配置不是太好,所有还是把这个值置为250,同时用一个脚本来进行杀掉php-fpm,从而释放他占用的内存,另外如果系统负载巨大,重启会导致  cpu的使用率飙升。脚本如下:
  #!/bin/bash
  log=/home/www/scripts/php-fpm.log
  echo `date "+%F %H:%M:%S"` >> $log
  for PID in `ps aux|grep php-fpm|grep -v grep|awk '{if($4>=1)print $2}'`
  do
  kill -9 $PID
  echo $PID >> $log
  done
  可以把脚本加到crontab中让其定期执行.
  另外记录几个长用的命令:
  1、按顺序列出内存占用率的进程     ps -A --sort -rss -o comm,pmem,pcpu |uniq -c |head -15
  ps -A --sort -rss -o comm,pmem,pcpu|uniq -c |head -15
  2、指令vmstat可以监控内存使用情况,作为对内存监控,我们比较关心swpd、free、si、so。一般系统不繁忙的状态下,我们看到swpd,so的值不会持续很高,经常为0
  3、通过pmap来查看进程占用内存的详细情况,例如,pmap 进程号
  pmap $(pgrep php-cgi|head -1)
  netstat -np|grep php-cgi 查看数量
1、提升服务器的文件句柄打开打开/etc/security/limits.conf : (增加)*    soft    nofile    51200*    hard    nofile    51200# vi /etc/security/limits.conf 加上  * soft nofile 51200
  * hard nofile 51200
2、提升nginx的进程文件打开数 nginx.conf : worker_rlimit_nofile 51200; 3、修改php-fpm.conf文件,主要需要修改2处。 命令 ulimit -n 查看限制的打开文件数,php-fpm.conf 中的选项rlimit_files 确保和此数值一致。  10240 51200 4、# vi /etc/sysctl.conf  底部添加
  fs.file-max=51200
完成以上修改,重启  本文参考了:http://www.opsers.org/linux-home/server/php-fpm-on-analysis-of-system-resources.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633394-1-1.html 上篇帖子: 关于nginx upstream的几种配置方式 下篇帖子: nginx配置遭遇No input file specified问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表