php-fpm配置问题

发布于 2021-11-24 19:05:41 字数 220 浏览 729 评论 4

网站运行环境是lnmp,最近其中一台出现502,我怀疑是fpm的配置问题,请大神们帮看看

max-children 420 

start-servers 200

min spare servers 200

max spare servers 400

max request 1000


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

心舞飞扬 2021-11-30 16:38:56

502通常是php进程挂掉,应该看fpm的日志,通常会有一个exited on signal xxx的日志,通常是触发了php的bug

一笔一画续写前缘 2021-11-30 15:28:01

赞同.PHP-FPM工作进程数设置过多,内存占用过大,导致内存发生swap,磁盘I/O增大,导致PHP-FPM不能及时响应请求,从而Nginx返回502.

悸初 2021-11-29 21:55:49

之前碰到过,原因是内存不足。

看下内存够不够

配置不全无法详细解答

做个少女永远怀春 2021-11-29 17:31:47

你服务器内存和CPU核心数多少呀,居然搞420个工作进程.

假设一个工作进程占用20MB内存,420个就占用8400MB内存.

如果你的CPU核心只有4个,你开那么多工作进程只会徒增CPU的上下文切换.

PHP-FPM epoll事件驱动(events.mechanism = epoll)的master进程会把Nginx发过来的新请求分配给空闲的worker进程.如果没有空闲的worker进程,master进程会把请求分配一个其中一个正在处理其他请求的worker进程,进入到backlog挂起(积压)的连接队列(半连接队列)里,排队等待处理,默认值为listen.backlog = 128.

个人认为,根据系统内存来设置PHP-FPM个数,是非常不合理的,这样情况下,上下文切换的开销很大,内存占用也很多.多进程是为了充分利用CPU的多核心,所以PHP-FPM个数设为CPU核心数也是合理的.如果PHP-FPM工作进程偶尔会因为一些操作阻塞(应该尽量避免),导致出现空闲的CPU核心,这时PHP-FPM个数可以设为CPU核心数*2.这样既能充分利用CPU的多核心,又可以避免过多的上下文切换造成的系统开销,还能节省内存.节省下来的内存可以用来分配给Memcached/Redis/MySQL.

对于单核心VPS,开1个Nginx工作进程和2个PHP-FPM工作进程就够了,PHP-FPM和MySQL保持持久连接.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文