一般性能调试方法,查cpu,带宽,内存,堆栈,然后用perf等性能分析工具进行分析。
没啥时间写全部内容,先做个大纲备忘,后续再慢慢补充吧。
###cpu:top
其实top命令就可以看到内存使用情况了,swap分区是否使用啦,内存够不够用啦
内存:free
也可以使用这个命令看内存,-m 是指单位为兆显示内存容量
带宽:netstat
netstat -a 列出所有连接
堆栈信息:pstack
pstack pid 打出当前线程的 堆栈信息,看看有没有加锁之类的,
而且可以看到线程的运行情况
程序调试:strace
应用场景:网站服务器负载过大,网站数量又多,不知是那个网站占用太多资源
- 查看 php-cgi 进程号:ps aux | grep php-cgi
- 查看系统调用 strace -p 进程号
或者,将记录结果存在output.txt文件中
strace -o output.txt -T -tt -e trace=all -p 进程号
性能调试工具:Perf
另一篇文章
从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。
常用操作:
- 显示内核和模块中,消耗最多CPU周期的函数: perf top -e cycles:k
- 显示分配高速缓存最多的函数:perf top -e kmem:kmem_cache_alloc
性能监控工具:nmon
性能分析工具:prof/gprof
显示执行所花费的时间具体都用在什么操作上
gprof精确地给出函数被调用的时间和次数,给出函数调用关系。
有其他好用的工具欢迎分享