最近搬主题在登陆主机发现,CPU有大量的占用,虽然没有100%的占用,但是CPU高占用也不太爽。到底是什么问题呢,搬主题经过一番分析后,最终找到解决办法,这里就给大家分享一下OpenLiteSpeed的LSPHP进程CPU占用高的一种解决办法。
问题分析
首先在SSH登陆后,CPU占用很高,使用top命令后查看各种进程的占用
其中发现是LSPHP进程占用很高。因为搬主题是基于OpenLiteSpeed环境的,所以PHP对应的是LSPHP进程的。然后使用命令来找到具体什么在占用CPU
strace -c -p [pid]
其中[pid]是对应的进程好,如果上面的LSPHP的进程号是12345,那么你要换成12345,如
strace -c -p 12345
获取您的进程执行的系统调用的漂亮摘要列表。我将其应用于 LiteSpeed 进程,并发现以下内容(取自部分截断)
[根@服务器:/根]> strace的-c -p 97276个
过程97276附-中断退出
进程97276分离
% time seconds usecs/call 调用错误 syscall
------ ----------- ------------ --------- --------- ---- ----------
93 . 25 0.395625 0 6338926 38539 lstat
2。72 0.011539 0 225123 GETCWD
1。51 0.006415 0 101411 5977 STAT
0。61 0.002593 0 25156 getdents
0。48 0.002039 0 25621 21打开
0。27 0.001136 0 25625 关闭
0。26 0.001091 0 12307 12307读取链接
0。22 0.000913 0 9239 1读取
0。16 0.000698 0 12887 munmap
0。15 0.000634 0 24547 fstat
0。15 0.000628 0 12887 MMAP
[.....]
------ ----------- ------------ --------- --------- ---- ----------
100 . 00 0.424240 6835792 57199总计
这是对lstat的 630 万次调用。但为什么会出现这种情况?
经过一番挖掘,我发现罪魁祸首是 PHP 的open_basedir ——这在我们的例子中是完全不必要的,因为我们通过 suExec 在 FastCGI 模式下运行 PHP(因此文件系统权限绰绰有余)。
关闭 open_basedir()
这里我们可以使用对应的面板进行图形化设置,如使用CyberPanel面板的,可以登录面板后,找到对应的网站设置,关闭 open_basedir() 即可
点击【防跨站】
然后选择【Disable】
点击应用后既可。
关闭 open_basedir() 后,在不同的进程中比较结果,其中LSPHP的占用降下去了
以上就是搬主题发现的解决办法。
如果您想更进一步,PHP 还具有用于将文件映射到其真实路径的缓存 – 对于大型 Drupal 安装,我发现默认值 16K 几乎不够。您可以通过调整两个相关的 PHP.ini 参数来获得一些额外的性能:
realpath_cache_size = 1 M realpath_cache_ttl = 3600
暂无评论内容