数据流转
理论上,我们需要对系统数据流转的每个节点做监控,收集数据,以便于分析,但受限于环境或时间问题,因此,需要进行简单分类,选择最需要的地方进行监控
系统硬件资源
对于承载应用的最基础设备,需要充分了解其使用情况,需要关注的内容由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【需安装,轻量级】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。