
2.1.1. sar(System Accounting Report)及其组成工具
2.1.2. vmstat、iostat和prstat
2.2.1. 有图形化的资源监视器
2.2.2. 类似typeperf的命令行工具
2.3.1. 用户时间
2.3.2. 系统时间
2.3.2.1. 执行内核代码的时间所占的百分比
2.3.2.2. Windows上叫作特权时间
2.3.3. CPU空闲原因
2.3.3.1. 应用程序阻塞在同步原语上,直到锁释放后才能继续执行
2.3.3.2. 应用程序在等待某些东西
2.3.3.3. 应用程序没有事情可做
2.4.1. 工作量是固定的
2.4.2. CPU空闲意味着无事可做
2.4.3. 榨干CPU的最后一点处理能力是其孜孜以求的目标
2.6.1. CPU在有工作可做时也可能空闲
2.6.2. 以固定大小的线程池运行各种任务
2.6.2.1. 线程任务以队列形式放置,当有线程空闲而且队列中有任务时,该线程会取出任务并执行
2.6.2.2. 不要仅仅因为有空闲的CPU可用,就认为应该增加线程池的大小以完成更多的工作
2.8.1. Unix系统称之为运行队列
2.8.1.1. vmstat
2.8.1.2. 运行队列表示的是机器上所有的进程信息
2.8.1.3. 让Unix系统的运行队列长度小于等于CPU数
2.8.2. Windows系统称之为处理器队列
2.8.2.1. typeperf
2.8.2.2. 处理器队列长度不包含正在运行的线程的数量
2.8.2.3. 让Windows系统的处理器队列长度等于0
2.8.3. 如果运行队列在相当长的时间内过长,那就说明机器已经过载,需要想办法减少机器当前的工作量
2.11.1. 对于不直接写入磁盘的应用程序,系统内存交换会影响它们的性能
2.11.2. 瓶颈的原因
2.11.2.1. 写入数据的效率不高(吞吐量太低)
2.11.2.2. 写的数据太多(吞吐量太高)
2.11.3. iostat
2.12.1. netstat
2.12.2. typeperf
2.12.3. nicstat
2.12.4. 对于本地以太网,使用率持续超过40%就说明接口饱和了
2.12.5. 瓶颈的原因
2.12.5.1. 写入数据的效率不高(吞吐量太低)
2.12.5.2. 写的数据太多(吞吐量太高)
3.1.1. 打印Java进程中的基本类、线程和JVM信息
3.1.2. % jcmd process_id command optional_arguments
3.2.1. 提供JVM活动的图形化视图
3.2.2. 线程的使用
3.2.3. 类的使用
3.2.4. GC活动
3.4.1. 查看JVM系统属性
3.4.2. 允许动态设置一些系统属性
3.7.1. 监控JVM的GUI工具
3.7.2. 可以分析正在运行的应用程序
3.7.3. 可以分析JVM堆转储文件
4.1.1. JVM启动后运行的时长
4.1.2. % jcmd process_id VM.uptime
4.2.1. 显示了System.getProperties()中的条目
4.2.2. % jcmd process_id VM.system_properties
4.2.3. % jinfo -sysprops process_id
4.4.1. 显示了命令行直接设定的标志
4.4.2. % jcmd process_id VM.command_line
4.5.1. 应用程序中生效的调优标志
4.5.2. % jcmd process_id VM.flags [-all]
4.5.3. 显示了命令行设置的标志和JVM直接设置的一些标志
4.5.4. 加上-all命令可以列出所有的标志
5.1.1.
% java other_options -XX:+PrintFlagsFinal -version
uintx InitialHeapSize := 4169431040 {product}
intx InlineSmallCode = 2000 {pd product}
5.1.2. 输出中的冒号表示标志使用了非默认值
5.1.2.1. 标志的值直接通过命令行设定
5.1.2.2. 其他标志间接地改变了这个标志的值
5.1.2.3. JVM自动计算出了默认值
5.1.3. 没有冒号,表示当前的值是这个版本JVM的默认值
5.1.4. product表示该标志的默认设置在所有平台是统一的
5.1.5. pd product表示该标志的默认值依赖于平台
5.2.1. 允许在应用程序执行过程中更改标志的值
5.2.2. % jinfo -flags process_id
登录查看全部
参与评论
手机查看
返回顶部