Linux系统检测
通过检测系统,可以获取一些基准数据,进行分析,根据不同的业务特点系统不同组件的压力,可以有cpu密集型,内存密集型,网络吞吐密集性型,io密集型
一 系统检测工具
Free,Top,ps,Vmstat,Sysstat
二 Free工具的使用:用来查看linux系统中内存和缓存的状态
[root@hky-linux1 ~]# free
total used free shared buffers cached
Mem: 275756 208948 66808 0 16260 125608
-/+ buffers/cache: 67080 208676
Swap: 1028120 0 1028120
Total:物理内存总数
Used:总计分配给缓存使用的数量,其中部分缓存可能未被实际使用
Free:未被分配的内存数量,还有多少可用
Shared:多个进程共享的内存总额
Buffers :是在内存中准备写入磁盘的缓冲区,实现一次性批量写入,避免频繁写入
Cached:是从磁盘中读取的内容在内存中的缓存,为后续读取提供一种快速的访问方式
Mem(第二行):针对os的,buffers和cached都是被使用的,所以tatal=used+free
[root@hky-linux1 ~]# echo $[208948+66808]
275756
-/+ buffers/cached:
-buffers/cached:被程序实实在在吃掉的内存
+ buffers/cached:可以挪用的内存
所以total=used3+free3
[root@hky-linux1 ~]# echo $[208676+67080]
275756
Used2= buffers2+cached2+used3
[root@hky-linux1 ~]# echo $[16260+125608+67080]
208948
Free3=buffers2+cached2+free2
[root@hky-linux1 ~]# echo $[16260+125608+66808]
208676
不做清除操作:0
清除pagecache:1
清除dentires和inodes:2
清除dentires和inodes和pagecache:3
清除缓存操作方法
这里不得不介绍一下proc
Proc是一个虚拟文件系统是用户和内核之间实现通信的一种手段
“取值”不做清除操作:0
清除pagecache:1
清除dentires和inodes:2
清除dentires和inodes和pagecache:3、
Proc里的文件不能直接vi编辑,可以通过如下方法编辑
Echo [0,1,2,3] >/proc/sys/vm/drop_caches/
下面是我使用proc的实例
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 143964 111448 0 684 37396
-/+ buffers/cache: 105884 149528
Swap: 1020116 0 1020116
echo 1 > /proc/sys/vm/drop_caches
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 142912 112500 0 204 36788
-/+ buffers/cache: 105920 149492
Swap: 1020116 0 1020116
Buffer明显变小
echo 2 > /proc/sys/vm/drop_caches
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 143548 111864 0 588 37164
-/+ buffers/cache: 105796 149616
Swap: 1020116 0 1020116
因为2不清除脏页,所以buffer有所上升
echo 3 > /proc/sys/vm/drop_caches
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 142808 112604 0 132 36768
-/+ buffers/cache: 105908 149504
Swap: 1020116 0 1020116
看见没3效果最好
注意:
在执行清除缓存之前,必须手动执行sync
1 sync命令
运行sync子进程,将所有未写的系统缓冲区写入到磁盘中,包含已经修改的inode,保证文件系统的完整性
2 sysnc在修改drop_caches的值,可以清除磁盘缓存,释放内存,得出真实的磁盘io
3 清除磁盘缓存的另外一种方法就是执行sync后umount掉对应的磁盘分区设备
[root@hky-linux1 ~]# free;sync;free
total used free shared buffers cached
Mem: 275756 209728 66028 0 16928 125616
-/+ buffers/cache: 67184 208572
Swap: 1028120 0 1028120
total used free shared buffers cached
Mem: 275756 209756 66000 0 16936 125608
-/+ buffers/cache: 67212 208544
Swap: 1028120 0 1028120
[root@hky-linux1 ~]# echo "3" > /proc/sys/vm/drop_caches
[root@hky-linux1 ~]# free
total used free shared buffers cached
Mem: 275756 83112 192644 0 200 19680
-/+ buffers/cache: 63232 212524
Swap: 1028120 0 1028120
新命令:Last | more //查看都有哪些用户登录
Top –d 1 –n 1 > file
Strings file
举例看看缓存的作用
[root@hky vm]# time find / >/dev/null
real 2m9.407s
user 0m0.231s
sys 0m7.445s
用时2分钟多
Free
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 231016 24396 0 77620 37452
-/+ buffers/cache: 115944 139468
Swap: 1020116 0 1020116
Cached变的很大
现在重复执行
[root@hky vm]# time find / >/dev/null
real 0m2.538s
user 0m0.445s
sys 0m1.092s
用时两秒;
echo "3" > /proc/sys/vm/drop_caches
[root@hky vm]# free
total used free shared buffers cached
Mem: 255412 144052 111360 0 188 36800
-/+ buffers/cache: 107064 148348
Swap: 1020116 0 1020116
[root@hky vm]# time find / >/dev/null
real 1m29.158s
user 0m0.195s
sys 0m5.109s
Free命令有用的参数:
引用
·-b,-k,-m和-g分别按照bytes, kilobytes, megabytes, gigabytes显示结果。
·-l区别显示low和high内存
·-s 每隔若干秒刷新一次