Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具
一: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 st
2 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 java Average: 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 %idle
0.26 0.00 0.22 0.06 0.24 99.23 Device: 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和传送速率的统计信息
Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具的更多相关文章
- Java性能优化权威指南-读书笔记(五)-JVM性能调优-吞吐量
吞吐量是指,应用程序的TPS: 每秒多少次事务,QPS: 每秒多少次查询等性能指标. 吞吐量调优就是减少垃圾收集器消耗的CPU周期数,从而将更多的CPU周期用于执行应用程序. CMS吞吐调优 CMS包 ...
- Java性能优化权威指南-读书笔记(四)-JVM性能调优-延迟
延迟指服务器处理一个请求所花费的时间,单位一般是ms.s. 本文主要讲降低延迟可以做的服务器端JVM优化. JVM延迟优化 新生代 新生代大小决定了应用平均延迟 如果平均Minor GC持续时间大于应 ...
- Java性能优化权威指南-读书笔记(三)-JVM性能调优-内存占用
新生代.老年代.永久代的概念不多说,这三个空间中任何一个不能满足内存分配请求时,就会发生垃圾收集. 新生代不满足内存分配请求时,发生Minor GC,老年代.永久代不满足内存分配请求时,发生Full ...
- Java性能优化权威指南-读书笔记(二)-JVM性能调优-概述
概述:JVM性能调优没有一个非常固定的设置,比如堆大小设置多少,老年代设置多少.而是要根据实际的应用程序的系统需求,实际的活跃内存等确定.正文: JVM调优工作流程 整个调优过程是不断重复的一个迭代, ...
- [原创]Java性能优化权威指南读书思维导图
[原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt Binu John 译者: 柳飞 ...
- [原创]Java性能优化权威指南读书思维导图4
[原创]Java性能优化权威指南读书思维导图4
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- [原创]Java性能优化权威指南读书思维导图2
[原创]Java性能优化权威指南读书思维导图2
- 读书笔记系列之java性能优化权威指南 一 第一章
主题:java性能优化权威指南 pdf 版本:英文版 Java Performance Tuning 忽略:(0~24页)Performance+Acknowledge 1.Strategies, A ...
随机推荐
- USACO 3.2 msquare 裸BFS
又是个裸BFS... 和西安网赛那道1006一样的,只不过加上了要记录方案.顺便复习map 记录方案直接在bfs队列的结点里加一个vector<int> opt,把从开头一直到当前结点的操 ...
- [转]基于overlayfs的硬盘资源隔离工具troot
原文在这里:http://blog.donghao.org/tag/overlayfs/ 某些开发测试团队会有这样的需求:多个开发或测试人员在一台物理机上搭环境.装rpm包.测试等,目录很可能互相干扰 ...
- android jni
1, java.lang.UnsatisfiedLinkError: Couldn't load xxxxx: findLibrary returned null 当 apk 是被放到 /system ...
- HDU2196computer(树上最远距离 + DP)
Computer Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- Linux创建用户命令
创建用户.设置密码.修改用户.删除用户: useradd testuser 创建用户testuser passwd testuser 给已创建的用户testuser设置密码 说明:新创建的用户 ...
- 把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry
把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方.Duplicate entry ’3′ for key ‘PRIMARY’ 你的主键是不 ...
- 锋利的jQuery-5--下拉框的应用(看写法)
如图,可以通过中间的按钮将左边选中的选项添加到右边,或者全部添加到右边,也可通过双击添加.反之也可以. 左边选中加到右边: $("#add").click(function(){ ...
- servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解1
servlet的一个web容器中有且只有一个servlet实例或有多个实例的理解 (2013-06-19 19:30:40) 转载▼ servlet的非线程安全,action的线程安全 对提交 ...
- ucenter实现原理
其实Ucenter实现同步登陆的原理就是cookie,一个应用登陆成功之后,向Ucenter传递数据(post方式),让Ucenter通知其他的应用也设置 cookie(get方式),这样用户在访问其 ...
- C++中map的概念,与简单操作
来源:http://blog.csdn.net/wallwind/article/details/6876892 C++map学习 map<Key, Data, Compare, Allo ...