网站建设策划书模板下载广告网页
1.定位是哪个程序造成的cpu过高
如果有云服务器,就用云服务器自带的监控功能,查时间段
如果没有,则使用:
ps -eo pid,comm,pcpu,pmem,cputime --sort=-cputime | head -n 100 
 
2.定位到问题
发现是uwsgi的cpu消耗过高!
配合uwsgi的查询方式:使用 strace 和 perf 排查 uWSGI 占用 CPU 的情况,可以帮助你定位性能瓶颈或代码中的问题
yum install strace
ps aux | grep uwsgi
strace -p <PID> -c
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------45.23    0.123456         123      1000         0 poll30.12    0.082345          82      1000         0 read10.45    0.028901          28      1000         0 write...
------ ----------- ----------- --------- --------- ----------------
100.00    0.273456                  3000         0 total
 
-  
% time:每个系统调用占用的 CPU 时间百分比。 -  
seconds:每个系统调用的总耗时。 -  
calls:每个系统调用的调用次数。 -  
syscall:系统调用的名称。 
通过分析输出,可以确定哪些系统调用占用了较多的 CPU 时间。
3.进一步分析:使用 perf 和火焰图定位高 CPU 消耗的函数。
yum install perf
git clone https://github.com/brendangregg/FlameGraph.git
cd FlameGraph
perf record -p <PID> -g
perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > flamegraph.svg
firefox flamegraph.svg 
 
 
