php-fpm占用CPU太高

lxwd 发布于 2015/12/22 11:00
阅读 14K+
收藏 1

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

服务器是双核的4GB内存,搭建的是LNMP的环境,在用 webbench做压力测试的时候100的并发,就变成这样了,是不是服务器配置不行啊
加载中
2
eechen
eechen
2个CPU核心开超过50多个PHP-FPM工作进程,CPU负载能不高吗?
比如4个PHP-FPM进程就能跑满4个核心的CPU,
那么你开40个PHP-FPM进程也没有任何意义,
只会占用更多的内存,造成更多的CPU上下文切换,性能反而更差.

对于一些存在阻塞的IO密集的操作,比如上传操作,可以设立单独的upload进程池,利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4
具体看: PHP FastCGI进程管理器PHP-FPM的架构
freesoftware
freesoftware
回复 @lxwd : 你的想法很好 但最好不要用 PHP-FPM 这样东西来跑重负载。
q
qzlaobi
top显示的是子进程 并发一上来子进程多 有什么奇怪的
eechen
eechen
回复 @lxwd : 所以,你应该使用static模式,并且减少进程数量,比如可以设置4个PHP-FPM工作进程。打个比方,你才2台机器,你请100个工人来也轮流操作不仅不能提升效率,反而影响效率。
lxwd
lxwd
php-fpm的进程管理模式是采用的动态管理,当时的想法是php进程处理完了就会自动释放资源
1
a
akin-zhou

抛开那些你改变不了的条件不谈(比如增加机器配置,数据库独立部署等),这里给几个建议:

1、检查下php是否开启了opcache缓存

2、strace工具调试一下看瓶颈在哪里,比如使用某些框架,需要动态的打开文件,框架是否支持优化的方案,到框架的官网上去看下,一般都有,另外框架一般默认加载了大而全的东西,检查下如果不是需要的是否可不加载。

3、尝试去优化下业务吧,能用memcached替换mysql的业务,用memcached替换吧。

0
leo108
leo108

你对2核4G的性能要求太高了,不仅跑php还跑mysql

leo108
leo108
回复 @lxwd : 等你公司能有100并发的访问量再说吧
lxwd
lxwd
唉,说多了都是眼泪,公司不愿意加服务器,苦逼的都是我们这些人啊
0
南湖船老大
南湖船老大
该评论暂时无法显示,详情咨询 QQ 群:点此入群
lxwd
lxwd
我也知道啊,主要是想优化一下,尽量不让服务器因为CPU占用高导致网页打不开啊
0
宏哥
宏哥

引用来自“eechen”的评论

2个CPU核心开超过50多个PHP-FPM工作进程,CPU负载能不高吗?
比如4个PHP-FPM进程就能跑满4个核心的CPU,
那么你开40个PHP-FPM进程也没有任何意义,
只会占用更多的内存,造成更多的CPU上下文切换,性能反而更差.

对于一些存在阻塞的IO密集的操作,比如上传操作,可以设立单独的upload进程池,利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4
具体看: PHP FastCGI进程管理器PHP-FPM的架构

不懂装懂

mysql 死锁了都不知道

呆头鱼
呆头鱼
回复 @宏哥 : 确实是不懂装懂秀下限
toozyxia
toozyxia
回复 @lxwd : 你看nginx日志,算下每个PHP应答时间是多少。2U估计撑不住100并发。我觉得这个很正常。找个合理点的目标吧。
toozyxia
toozyxia
回复 @宏哥 : 一个cpu一个时间点只能处理一个进程,他有两个CPU,一秒压100个进来,就算不用mysql也会堆积。这是运算能力限制在那里。mysql并发写在顶部会不会有锁争用我还没了解。但绝对不是造成楼主堵塞的原因
lxwd
lxwd
回复 @聽雨人 : 感谢为了小弟这问题,麻烦你们了,其实现实的问题是LNMP架构是在一台服务器上,大量的访问(每秒100的量),本来就是动态网站,最后就是调用了PHP去解析,导致PHP占用cpu和内存资源,最后网站打不开了,这个有什么好办法啊,因为session文件是放在mysql数据库的,大量访问导致数据库单表太大,最后mysql和php-fpm占用CPU,死机了
lxwd
lxwd
回复 @宏哥 : 感谢为了小弟这问题,麻烦你们了,其实现实的问题是LNMP架构是在一台服务器上,大量的访问(每秒100的量),本来就是动态网站,最后就是调用了PHP去解析,导致PHP占用cpu和内存资源,最后网站打不开了,这个有什么好办法啊,因为session文件是放在mysql数据库的,大量访问导致数据库单表太大,最后mysql和php-fpm占用CPU,死机了
下一页
0
月影又无痕
月影又无痕
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
mickelfeng
mickelfeng

看下是不是mysql链接数少了。处理不过来了

0
china_sear
china_sear
该评论暂时无法显示,详情咨询 QQ 群:点此入群
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部