一:CPU

1. 用户态CPU是指执行应用程序代码的时间占总CPU时间的百分比。

系统态CPU是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态CPU高意味着共享资源有竞争或者I/O设备之间有大量的交互。

提高应用性能和扩展性的一个目标就是尽可能降低系统态CPU使用率。

2. CPU运行队列就是那些已经准备好运行、正等待可用CPU的轻量级进程。

当运行队列长度达到处理器的4倍或者更多时,系统的相应就非常迟缓了。

解决运行队列长有两种办法:

1). 增加CPU以分担负载;

2). 分析系统中运行的应用,改进CPU使用率;

1. vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st2  0      0 104956    868 825812    0    0     1     5   16   25  0  0 100  0  0

r:CPU运行队列长度,值是运行队列中轻量级进程的实际数量

us:用户态CPU使用率

sy:系统态CPU使用率

id:CPU空闲率

2. top

top - 09:42:04 up 3 days, 3 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 108 total,   3 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1015472 total,   104568 free,    84224 used,   826680 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   727760 avail Mem PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                          784 root      20   0  553064  16340   5748 S  0.0  1.6   0:21.48 tuned                                                                                            743 root      20   0  110512  13140    676 S  0.0  1.3   0:00.13 dhclient                                                                                         9678 polkitd   20   0  527456  13128   4680 S  0.0  1.3   0:00.09 polkitd                                                                                          1 root      20   0   43684   6176   3804 S  0.0  0.6   0:05.08 systemd

上半部分是整个系统的统计信息,下半部分是进程的统计信息。

P 按CPU占用率排序
M 按内存占用率排序
T 按CPU占用时间排序
H 查看详细线程信息

二:内存

1. 系统在使用页面交换或虚拟内存时,访问swap中内存以及JVM垃圾回收swap中内存时,都存在内存置换(从swap中置换到内存),性能肯定有问题;

2. 锁竞争,一般来说让步时钟周期占用3%—5%或更多,说明java应用正面临锁竞争;

vmstat

free:可用空闲内存;

si:内存页面换入;

so:内存页面换出;

pidstat

[test ~]$ pidstat -w -I -p 7938 5
Linux 3.10.0-229.20.1.el7.x86_64 (test)     11/13/2016  _x86_64_    (1 CPU)07:56:42 PM   UID       PID      cswch/s     nvcswch/s  Command
07:56:47 PM     0      7938      3500.00     0.00  java
07:56:52 PM     0      7938      3500.00     0.00  java
07:56:57 PM     0      7938      3500.00     0.00  javaAverage:        0      7938      3500.00     0.00  java

cswch/s:让步式上下文切换;

例如:处理器为3.0GHz双核,每个处理器上下文切换3500/2=1750,耗费的时钟周期1750*80000=140000000,因此上下文切换所占比例为:140000000/3000000000=4.7

三:网络

分布式Java应用的性能和扩展性受限于网络带宽或网络I/O的性能。

nicstat

需要编译安装(https://blogs.oracle.com/timc/tags/linux)

    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:25:57     eth0    2.34    1.77    2.84    2.29   842.6   789.6  0.00   0.00
13:25:57       lo    0.00    0.00    0.00    0.00   85.49   85.49  0.00   0.00

Int:网络接口设备名

rKb/s:每秒读取的KB数

wKb/s:每秒写入的KB数

%Util:网络使用率

Sat:饱和度

四:磁盘

iostat

[test ~]$ iostat -xm
Linux 3.10.0-229.20.1.el7.x86_64 (test)     11/13/2016  _x86_64_    (1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.26    0.00    0.22    0.06    0.24   99.23Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda              0.00     0.22    0.11    0.38     0.00     0.00    16.79     0.00    6.15    7.51    5.74   2.05   0.10
xvdb              0.00     0.00    0.00    0.00     0.00     0.00    18.07     0.00    7.04   10.93    6.36   2.75   0.00

五:统计

sar

sar 1 3 查看当前CPU数据,每一秒刷新一次,统计三次
sar -q 查看平均负载
sar -r 查看内存使用状况
sar -W 查看页面交换发生状况
sar –b 查看I/O和传送速率的统计信息

转载于:https://www.cnblogs.com/xiongpq/p/6059340.html

Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具相关推荐

  1. [原创]Java性能优化权威指南读书思维导图

    [原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt    Binu John 译者: 柳飞 ...

  2. Java性能优化权威指南--笔记

    出处:http://xiongpq.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 原文 ...

  3. java性能优化权威指南_Java性能优化权威指南 PDF扫描[132MB]

    Java性能优化权威指南主要为Java SE 和Java EE 应用的性能调优提供建议.主要包括以下几方面:性能监控.性能分析.Java HotSpot VM 调优.高效的基准测试以及Java EE ...

  4. 笔记:Java 性能优化权威指南 第6章 Java 应用性能分析技巧

    一.性能优化的类型 1.使用更高效的算法 2.减少锁竞争 3.为算法生成更有效率的代码 二.CPU的使用 用BufferedOutputStream 替代直接的 FileOutputStream 利用 ...

  5. 死磕Java多线程(五)---理解CPU高速缓存的工作原理 《JAVA性能优化权威指南》 提到过CPU高速缓存未命中率影响线程切换频率

    https://blog.csdn.net/weixin_44046437/article/details/99101180

  6. mysql数据库权威指南_MySQL_MySQL权威指南读书笔记(三),第二章:MYSQL数据库里面的数 - phpStudy...

    MySQL权威指南读书笔记(三) 第二章:MYSQL数据库里面的数据 用想用好MYSQL,就必须透彻理解MYSQL是如何看待和处理数据的.本章主要讨论了两个问题:一是SQL所能处理的数据值的类型:二是 ...

  7. HTTP权威指南读书笔记

    <<HTTP权威指南>>读书笔记 第一部分:Web的基础 第1章:HTTP概述 主要内容 1.什么是HTTP 2.HTTP的基本组件 HTTP HTTP:HTTP(Hypert ...

  8. MongoDB权威指南读书笔记——CRUD

    插入并保存文档 插入是向MongoDB中添加数据的基本方法.可以使用Insert方法向目标集合插入一个文档:db.foo.insert({"bar" : "baz&quo ...

  9. HTML5权威指南----读书笔记

    <!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...

最新文章

  1. MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
  2. Android ExecutorService 的理解与使用
  3. 《Neural network and deep learning》学习笔记(一)
  4. Bootstrap表格样式
  5. 剑指offer——判断树的子结构
  6. 前端开发在uc浏览器上遇到的坑
  7. Ouibounce – 在用户离开你网站时显示模态弹窗
  8. 成功的人和不成功的人最大的区别
  9. iOS开发探索-Base64编码
  10. 浪漫的c语言程序6,【2021跨年】最浪漫的烟花程序,送给新的一年的自己!(源码)...
  11. django官方文档3.0学习笔记 03
  12. TA505武器之隐形电子邮件窃取器
  13. [小说]魔王冢(23)道士
  14. 基于51单片机的智能窗口控制系统(protues仿真+程序+论文+PPT+PCB)
  15. Appium和Python实现蚂蚁森林自动化收取能量
  16. Android实现圆形头像
  17. jeecgboot 查询_124.JSuperQuery高级查询组件 - JeecgBoot 开发文档
  18. pytohn用Pillow或OpenCV删除图片某种颜色
  19. 关于硬盘不可不知的基础知识-硬盘开盘修复
  20. Android自定义步骤指示器

热门文章

  1. html仿真花卉代码,仿真鲜花幼儿园手工教案
  2. 为什么两个controller的session的id不一样_新笑傲江湖手游服务器名字为什么不一样解答...
  3. 从零开始刷Leetcode——数组(896.905.914.922)
  4. 让你“爱”上 GitHub,解决访问时图裂、加载慢的问题
  5. CPU实时人脸检测,各种朝向、侧脸都检出来
  6. 百度下拉词推广是什么?
  7. sqlplus 主键 设置_浅谈MyBatis-Plus学习之Oracle的主键Sequence设置
  8. python celery异步_python celery 异步学习
  9. pythondraw解释_科学网—Draw figures with Python - 高琳琳的博文
  10. python语言特点粘性扩展_【语言处理与Python】9.2处理特征结构\9.3扩展基于特征的文法...