数据流转
理论上,我们需要对系统数据流转的每个节点做监控,收集数据,以便于分析,但受限于环境或时间问题,因此,需要进行简单分类,选择最需要的地方进行监控
系统硬件资源
对于承载应用的最基础设备,需要充分了解其使用情况,需要关注的内容由 CPU、Memory、I/O,Network
注意点:
CPU 关注的是 %us[user 使用率,应用使用率通常为用户 CPU 使用率],%sy[系统使用率] 需要注意
Linux 下,空闲 memory 的计算方式,基于 LINUX 系统的内存使用原则,不要看到 free 的数据少了,觉得是瓶颈 *eg:linux 下 内存:Total 2G usred 1.5G free 200M buffer 1G cache 500M 实际可用内存总量为 free+buffer+cache [linux 内存使用原则:尽可能的使用内存]*
IO 的瓶颈的确认需要特别注意,需要多方考虑,综合思考,“一切问题皆 IO”
Network 需要注意上下行及单位
监测工具:
Nmon 小巧精炼的工具,安装使用均很方便,支持多个版本 linux,内容丰富
Glances【重点推荐】,业内号称 linux 系统实时监控的瑞士军刀,监控覆盖全面,界面清晰
linux 自带命令:Top\iostat\pidstat\sar\netstat\iftop\jstat\jps 等等
应用层资源监控
操作系统的资源消耗可以理解为是应用层问题的外在表现
阻塞:正在运行的线程没有运行结束,暂时让出 CPU
争用:多个线程对同一段数据进行不同的操作
死锁:好的线程锁是业务的保障,不好的锁就是灾难
理解线程状态图,有助于我们解决问题
基于 JAVA 的监控工具
Jvisualvm JDK 自带监控工具,无需安装,需简单配置,可全方位监控代码运行情况 JProfiler【商业软件】,直觉式的 GUI 可以让你快速找到性能瓶颈,抓出内存泄露
数据库资源的监控 [80% 的性能问题,会出现在数据库层面]
关注的点:
SQL 的执行效率,或者说执行计划
索引的正确使用
大数据量情况下分库分表
其他 TOP N 的消耗
Oracle
AWR 报告 [这个报告可以看出 Oracle 数据库的各问题]
Mysql
MONyog: 内容全面,界面清爽,查看慢 SQL【需安装,轻量级】