性能优化

性能优化
整理gupao学院的讲解
性能的几个唯度
1.,看cpu, 命令vmstat,
性能优化_第1张图片
http://www.man7.org/linux/man-pages/man8/vmstat.8.html
首先检查 cpu,cpu 使用率要提升而不是降低
CPU 空闲并不一定是没事做,也有可能是锁
或者外部资源瓶颈。
命令 Top
性能优化_第2张图片
http://man7.org/linux/man-pages/man1/top.1.html

  1. IO
    命令 iostat
    性能优化_第3张图片
    http://www.man7.org/linux/man-pages/man1/iostat.1.html

3.Memory
命令 free
在这里插入图片描述
http://www.man7.org/linux/man-pages/man1/free.1.html

.4 Network
命令 nicstat (需要安装)
wget http://sourceforge.net/projects/nicstat/files/nicstat-1.92.tar.gz
tar -zxvf nicstat-1.92.tar.gz
sudo vim Makefile
CFLAGS = $(COPT) -m32#将此行修改为如下:
CFLAGS = $(COPT)

sudo make -f Makefile install

性能优化_第4张图片
性能优化_第5张图片
5 监控软件
https://www.zabbix.com/documentation/2.0/manual/appendix/api/api
zabbix nagios prometheus

术语
吞吐量:对单位时间内完成的工作量的度量
平均响应时间:提交请求和返回该请求的响应之间使用的时间
平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越
小;但是,系统吞吐量越大,未必平均响应时间越短;因为在某些情况(例
如,不增加任何硬件配置)吞吐量的增大,有时会把平均响应时间作为牺牲,
来换取一段时间处理更多的请求。
tps: Transactions per Second
qps: Queries per Second

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

性能优化_第6张图片
B. Shift + H 切换到线程模型 找到线程执行 cpu 高的线程号
在这里插入图片描述
C. Jstack pid > p.txt 用 jstack 导出线程的 dump (记住这个问题有时候没有那么明显
一直 cpu100%,可能是间歇性的 cpu 高所以这个能抓住这个线程还是要看运气)
D. 把线程号转 16 进制 printf “%x \n” 40437
在这里插入图片描述
F. 到刚刚导出的 p.txt 里面检索定位到
性能优化_第7张图片

你可能感兴趣的:(java)