设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

全面的高可用服务系统线上问题排查工具单之一(6)

发布时间:2019-05-10 18:20 所属栏目:21 来源:云时代架构
导读:命令输出: robert@robert-ubuntu1410:~$free totalusedfreesharedbufferscached Mem:2049416164648040293613280118596646288 -/+buffers/cache:8815961167820 Swap:209510014802093620 内存使用并不只有简单的

命令输出:

  1. robert@robert-ubuntu1410:~$ free 
  2.             total       used       free     shared    buffers     cached 
  3. Mem:      2049416    1646480     402936      13280     118596     646288 
  4. -/+ buffers/cache:    881596    1167820 
  5. Swap:     2095100       1480    2093620 

内存使用并不只有简单的占用和空闲两个状态,从上面的输出发现里面有buffer和cache的数据,从字面意义上来讲,都是缓存,那么弄清楚缓存什么数据才能有效的区分这两种缓存。

从上面命令的输出,我们可以看到,Buffer 118M, Cache 646M。其实,这两个内存区域都是用来缓存磁盘数据的,只不过缓存的数据是不同的:

  • buffers一般都不太大,在一个通用的Linux系统中,一般都是在几十到几百M字节,用于存储磁盘块设备的元数据,比如哪些块属于哪些文件,文件的权限,目录等信息。
  • cached一般会很大, 一般都是G字节以上, 用于存储读写文件的页, 当对一个文件进行读的时候, 会取磁盘文件页到此内存区域,然后从内存进行读取,当写入一个文件,会先写到此缓存,并将相关的页面标记为”dirty”。

buffers用于存储元数据,一般占用的空间不大,对它的关注也不多,cached一般会很大,随着读写磁盘的多少而自动的增加而减少,这也取决于物理内存是否够用,如果应用使用物理内存较多,操作系统会适当的缩小cached来保证用户进程对内存的需要。

2、pmap

此命令用来报告进程占用内存的详细情况,可以用来查出某些内存瓶颈问题的根源原因。

使用方式:

  1. pmap -d 2862 

命令输出:

  1. robert@robert-ubuntu1410:~$ pmap -d 2862 
  2. 2862:  java -server -Xms512m -Xmx512m -Xmn128m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCDetails -Xloggc:./logs/gc.log -cp /home/robert/working/workspace/vesta-id-generator/releases/vesta-id-generator-0.0.1-release/bin/vesta-rest-0.0.1/extlib -jar ./lib/vesta-rest-0.0. 
  3. Address           Kbytes Mode  Offset           Device    Mapping 
  4. 0000000008048000       4 r-x-- 0000000000000000 008:00001 java 
  5. 0000000008049000       4 rw--- 0000000000000000 008:00001 java 
  6. 000000000a017000     872 rw--- 0000000000000000 000:00000   [ anon ] 
  7. 00000000be800000     896 rw--- 0000000000000000 000:00000   [ anon ] 
  8. 00000000be8e0000     128 ----- 0000000000000000 000:00000   [ anon ] 
  9. 00000000be900000    1920 rw--- 0000000000000000 000:00000   [ anon ] 
  10. 00000000beae0000     128 ----- 0000000000000000 000:00000   [ anon ] 
  11. 00000000beb00000     284 rw--- 0000000000000000 000:00000   [ anon ] 
  12. ...... 

这个命令显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或者操作系统的内存问题。

04.CPU使用情况监控命令

1、vmstat

此命令显示关于内核线程、虚拟内存、磁盘IO、陷阱和CPU占用率的统计信息。

使用方式:

  1. vmstat 

命令输出:

  1. robert@robert-ubuntu1410:~$ vmstat 
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 
  3. r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
  4. 2  0   1480 404300 118252 646216    0    0    78    31   63  145  2  0 97  1  0 

这里面需要注意的是:

buff是IO系统用来做存储磁盘块文件元数据的信息

cache是操作系统用来缓存磁盘数据的缓冲区,操作系统会自动调节这个参数,在内存紧张的时候操作系统会减少cache的占用空间来保证其他进程可用

cs参数表达线程切换次数,此数据太大表明线程同步机制有问题

si和so如果较大说明系统频繁使用交换区,应该查看操作系统内存是否够用

bi和bo代表IO活动,根据大小可以知道磁盘的负载

2、mpstat

实时监控系统CPU的一些统计信息,这些信息存放在/proc/stat文件中,在多核CPU系统里,其不但能查看所有CPU的平均使用信息,而且能够查看某一个特定CPU的信息。

使用方式:

  1. mpstat -P ALL 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读