扫盲 2026.11.03 19:22 16 次浏览 0 条评论

服务器占用CPU过高处理

CPU飙到90%以上别急着重启,先打开任务管理器或者小皮面板的进程列表,按CPU占用排序,看是哪个进程在吃。Windows系统上常出现的是 mysqld.exe、httpd.exe、nginx.exe、php-cgi.exe、M2Server.exe 这几个。

MySQL占高多半是慢查询,或者表没建索引,先看当前正在跑什么语句:

SHOW FULL PROCESSLIST;              -- 查看当前正在执行的SQL,耗时长的那条最可疑
SHOW STATUS LIKE 'Threads_running'; -- 活跃线程数,突然飙高说明有语句在堆积

PHP进程吃满CPU,常见原因就是代码里出现死循环,或者递归没写出口。在 php.ini 里给脚本加上执行时间和内存上限,让有问题的脚本超时后自动退出,不会一直卡着:

max_execution_time = 30   ; 单个脚本最长执行30秒,超时结束
memory_limit = 128M       ; 内存上限,防止脚本吃爆内存

Apache或者Nginx一跑满,基本都是并发连接太多。在小皮面板里调整 MaxRequestWorkers 和 worker_connections,按机器内存来算,别盲目调大,调大了反而更容易卡死。

传奇三端这边,M2Server 占CPU基本就是脚本死循环,或者定时器刷得太密。把 QF 里高频触发的那段先注释掉,跑一会儿看CPU有没有下来,一个一个排除就行。

说点什么 0

行思随记

欢迎来到:行思随记