性能优化学习笔记

1.性能优化是什么

     性能优化就是发挥机器本来的性能。

2.性能的几个维度

2.1 CPU

命令:vmstat

首先检查 cpu,cpu 使用率要提升而不是降低。CPU 空闲并不一定是没事做,也有可能是锁或者外部资源瓶颈。

buffer和cache的区别:

两者都是RAM中的数据,简单来说,buffer是即将要被写进磁盘的,cache是被从磁盘中读出来的。这两者是为了提高IO性能的,并有OS管理,并非应用自己分配的内存,而是OS根据自己需要对空闲内存进行的额外利用。因为这部分只是缓存,降低IO,提升性能,只要应用程序有需要,OS可以直接将buffer写入磁盘,将cache删掉,得到空闲内存给应用程序使用。

 

命令top

 2.1 IO

命令:iostat

 

2.3Memory

命令:free

 

 2.4 NetWork

命令:nicstat(需要安装)

2.5 监控软件

3.术语

吞吐量:对单位时间内完成的工作量的度量

平均响应时间:提交请求和返回该请求的响应之间使用的时间

平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越小;但是,系统吞吐量越大,未必平均响应时间越短;因为在某些情况(例如,不增加任何硬件配置)吞吐量的增大,有时会把平均响应时间作为牺牲,来换取一段时间处理更多的请求。

tps: Transactions per Second

qps: Queries per Second

4.补充

CPU 负载高怎么定位:

A. top 找到 CPU 高的进程 (原理:方法是由线程执行的,线程是在进程下的,找到进程下 cpu 最高的线程就能定位到方法)

 

B. Shift + H 切换到线程模型 找到线程执行 cpu 高的线程号

C. Jstack pid > p.txt 用 jstack 导出线程的 dump (记住这个问题有时候没有那么明显一直 cpu100%,可能是间歇性的 cpu 高所以这个能抓住这个线程还是要看运气)

 D. 把线程号转 16 进制 printf “%x \n” 40437

F. 到刚刚导出的 p.txt 里面检索定位到

 

 

 

 

 

 

posted @ 2019-06-25 14:24  Co~Co  阅读(201)  评论(0编辑  收藏  举报