首頁 >後端開發 >php教程 >linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多

linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多

WBOY
WBOY原創
2016-06-06 20:51:131517瀏覽

linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多 ,有图所示,php-cgi 进程数一直是不降的,没有用户访问网站也是这么多,每个进程大概占用内存150-200M左右,16G内存有时候会阻塞。求大牛帮忙。,负载有时候会达到顶峰,前无古人后无来者,120 负载,cpu 跑满。求教

回复内容:

linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多linux 服务器负载很高,缘由貌似是 php进程过多,而且一直保持 400多 ,有图所示,php-cgi 进程数一直是不降的,没有用户访问网站也是这么多,每个进程大概占用内存150-200M左右,16G内存有时候会阻塞。求大牛帮忙。,负载有时候会达到顶峰,前无古人后无来者,120 负载,cpu 跑满。求教

可以考虑用fastcgi.
http://php.net/manual/en/install.fpm....

这么多的进程数load值很高也是可以预见的,建议还是查下PHP执行过程中的性能瓶颈究竟在哪。

mod_php是和apache同步执行的, 如果fastcgi的话, 服务器(一般nginx)和php之间是异步关系, 在某些情况下可以无需那么多php进程

打个比方, 如果一个用户用龟速上传一个文件, 那么apache和apache里面的那个php就在等待这个用户上传完成, 所以系统里面就需要更多的apache进程来应对并发

如果异步执行, 那么nginx在处理用户的上传, 一旦用户上传文件完成, 传给php处理只是一瞬间的事情.

当然有时候fastcgi也不一定能解决问题, 比如php在等待一个sql查询, 这个查询花了5秒, 那么5秒之内有新用户来访, 这个php就不能出门欢迎, 所以必须新开一个php进程

所以查一查你的php执行要花多久, 再看一看自己的访问量, 综合的去找原因并想办法解决吧

每个php进程都是很费内存的,建议根据服务器配置做适当调整,修改fastcgi配置文件或php-fpm配置文件,一般100个内对于大部分场景就够用了,再多就要考虑做任务调度或者消息队列处理了

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn