性能调优--概述
性能优化是什么
其实就是发挥机器本来的性能
性能的几个唯度
¶CPU
首先检查 cpu,cpu 使用率要提升而不是降低
CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。
¶命令 vmstat
¶命令 Top
¶Memory
¶命令 free
¶IO
¶命令 iostat
¶Network
¶命令 nicstat (需要安装)
1 | wget http://sourceforge.net/projects/nicstat/files/nicstat-1.92.tar.gz |
术语
- 吞吐量:对单位时间内完成的工作量的度量
- 平均响应时间:提交请求和返回该请求的响应之间使用的时间
- TPS:Transactions per Second
- QPS: Queries per Second
平均响应时间越短,系统吞吐量越大;
平均响应时间越长,系统吞吐量越小;
但是,系统吞吐量越大,未必平均响应时间越短;因为在某些情况(例如,不增加任何硬件配置)吞吐量的增大,有时会把平均响应时间作为牺牲,来换取一段时间处理更多的请求。
常见优化
问题
¶CPU 负载高怎么定位
- top 找到 CPU 高的进程 (原理:方法是由线程执行的,线程是在进程下的,找到进程下 cpu 最高的线程就能定位到方法)
- Shift + H 切换到线程模型 找到线程执行 cpu 高的线程号
- Jstack pid > p.txt 用 jstack 导出线程的 dump (记住这个问题有时候没有那么明显一直 cpu100%,可能是间歇性的 cpu 高所以这个能抓住这个线程还是要看运气)
- 把线程号转 16 进制 printf “%x \n” 40437
- 到刚刚导出的 p.txt 里面检索定位到