排查工具
top
- 定位哪个程序出现问题,要先知道哪些程序进程阻塞或者是cpu使用过高,第一个就是使用top命令
vmstat
- 在linux环境中,看每个排查bug或异常的工具,首先是vmstat,看看他的命令和作用
- 参数表示几秒采集几次信息.也就是1秒采集三次信息
参数解读
- procs:
- r:运行的线程数
- b:处于非中断睡眠的线程数
- memory:
- swpd:虚拟内存使用情况
- free:空闲的内存
- buff:用来做缓存的内存数
- cache:缓存大小
- swap:
- si:从磁盘交换到内存的页数
- so:从内存交换到磁盘的页数
- io:
- bi:发送到块设备的块数
- bo:从块设备接收的块数
- system:
- in:每秒中断数
- cs:每秒上下文切换数
- cpu:
- us:用户cpu使用时间
- sy:内核cpu使用时间
- id:空闲时间
- wa:等待io时间
- st:运行虚拟机窃取的时间
- 主要是看内存是否足够,线程数是否过多或过少,磁盘io操作是否过多,cpu占比是否比较高等等信息,在定位问题的位置
pidstat
- 使用pidstat工具查询具体的线程情况,vmstat只能查看进程信息
- 使用参数
- r:显示各个进程的内存使用情况
- d:显示各个进程的io使用情况
- w显示每个进程的上下文切换情况
- p:指定进程号
- u:默认参数,显示各个进程的cpu使用情况
- t显示进程中线程的统计信息
具体可以百度各个参数的解读,基本查看cpu使用情况和内存即可
jstack
- 使用以上命令定位cpu使用比较多的进程,可以使用jstack pid来查看堆栈信息,从而定位bug在哪里.