求大佬, PHP 项目 cpu 占用过高,内存占的很少,这个可能是什么原因

2023-06-01 17:09:57 +08:00
 tmtstudio

8 核 32g 的服务器,线上两千人左右,是相互交易买卖的业务场景,pref 跑过了,看不懂是哪块的问题,求指点

1437 次点击
所在节点    程序员
13 条回复
defunct9
2023-06-01 17:11:25 +08:00
开 ssh ,让我上去看看
garlics
2023-06-01 17:12:33 +08:00
代码有死循环?
john2022
2023-06-01 17:12:39 +08:00
你 session 是用文件存储的?换成 redis 试试
rushssss
2023-06-01 17:14:51 +08:00
opcache 开了吗?从火焰图上看似乎和文件系统有点关系,如果没有打开的话可以打开试试
tmtstudio
2023-06-01 17:15:17 +08:00
@john2022 没用 session ,全局搜了都没用到这个函数
LLaMA2
2023-06-01 17:15:27 +08:00
y 轴表示调用栈

x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。

看顶层的哪个函数占据的宽度最大,表示该函数可能存在性能问题。
raysonlu
2023-06-01 17:17:36 +08:00
顺便请教一下,如果 php 进程存在 IO 等待,是否会导致出现这个问题?
LLaMA2
2023-06-01 17:20:40 +08:00
IO 等待不会线性的影响 CPU 使用率,IO 等待极大概率会跑满读写利用率
bobzhangyong
2023-06-01 17:34:50 +08:00
看看是不是循环批量调用了 session_start 函数
colinlikepotatos
2023-06-01 17:50:11 +08:00
查一下 session 目录 和自己有写文件缓存的目录,看看是不是有目录下的文件过多导致的,有一次用文件记录访问 IP 导致写了几十万个文件。。也出现过类似的情况,xfs 都是文件系统相关的,估计有点关系
wangxin13g
2023-06-01 17:54:28 +08:00
看了下好像都是文件调用耗时,检查下文件读写
8355
2023-06-01 17:56:13 +08:00
猜测你的配置文件里应该开启了 session.auto_start
单机在线人数过多影响了磁盘 io 导致等待
验证方法:
先找到机器存放 session 的文件夹看看里面有多少文件
安装个 iotop 看一下现在的读写情况
关闭 session.auto_start
再看一下负载
tmtstudio
2023-06-01 19:10:08 +08:00
@8355 @colinlikepotatos 感谢大佬,真的是 session 读写占的 cpu

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/944955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX