语法:sar 【参数】【时间间隔 次数】
参数:
-u 【显示系统所有CPU在采样时间内的情况】
-A 【显示系统所有资源资源设备的运行情况】
-d 【显示系统所有硬盘设备在采样时间内的使用情况】
-r 【显示系统内存在此采样时间内的使用情况】
-v 【显示inode节点、文件和其他内盒标的统计信息】
-n 【显示网络运行情况】
二、实时显示系统状态的工具【top】
语法:top 参数
参数:
-d 【改变显示更新的速度,以秒为单位】
-n 【显示更新的次数,完成后将退出top】
-p 【显示指定的进程】
三、显示当前进程的状态(静态)【ps】
语法:ps 参数
参数:
-aux【显示包含用户下的所有的进程】
-ef 【显示所有进程的信息,包括命令行】
-Lf 【显示某个进程下的线程】# ps aux | sort -nr -k 3 | head -10 #查看占用CPU资源最高的10个进程
四、free
语法:free 参数
参数:
-s 【设置间隔的秒数】
-h 【以友好的形式展示】
-m【以M为单位】
-g 【以G为单位】、实际内存使用量=used-buffers-cached
实际内存剩余量=buffers+cached+free
buffer :作为buffer cache的内存,是块设备的读写缓冲区(可回收)
cache :作为page cache的内存,文件系统的cache(可回收)
清理内存之前使用sync命令,将内存的数据写入到硬盘中
五、输出磁盘IO和CPU的统计信息【iostat】
语法:iostat 【选项】【时间间隔】【次数】
参数:
-c【显示cpu使用情况】
-d【显示磁盘使用情况】
-n【显示NFS使用情况】
-p【显示磁盘和分区的情况】
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
六、列出系统上所有的网络连接情况【netstat】
语法:netstat 参数
参数:
-a【列出当前的所有连接】
-n【禁用域名解析功能,以数字的形式列出】
-p【查看进程和端口的信息】 #需要root权限
-e【-ep选项可以同时查看进程名和用户名;如果使用和-n一起使用,user列就会变成用户的id号,而不是用户名】
-t 【列出tcp协议的连接】
-u【列出udp协议的连接】
-c【持续输出信息】
-l 【列出正在监听的连接】
-r 【打印出来的信息和route命令输出的命令一样,可以加-n禁止域名解析】
-ie【输出信息与ifconfig命令一样】netstat -anpt | grep tcp | grep ESTABLISHED | wc -l #当前主机的tcp连接数
七、查看系统资源使用情况命令【vmstat】
语法:vmstat 【刷新延时 刷新次数】
参数:
r 表示运行队列(就是说多少个进程真的分配到CPU)。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free 空闲的物理内存的大小
buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存
cache 接用来记忆我们打开的文件,给文件做缓冲,(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。
so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in 每秒CPU的中断次数,包括时间中断
cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wa等待IO CPU时间。
八、查看系统运行时间【uptime】
语法:uptime
参数:
-v 【查看命令版本】显示当前时间--系统已运行时间--当前在线用户数--平均负载(最近1分钟、5分钟、15分钟,数值越小越好)
七、查看进程打开的文件、端口和打开文件的进程【lsof】
语法:lsof 参数
参数:
-u【显示指定用户打开了什么 #在用户前面加上^代表除了这个用户以外的】
-p【查看指定进程一打开的内容】
-i 【获取网络信息】
#lsof -i :[port] 查看端口
#lsof -i@[1.1.1.1:port] 查看主机的连通性
#lsof命令需要访问核心内存和各种文件系统,需要root权限才可执行lsof | grep deleted;cd /proc/进程/fd;echo ‘‘ > 1 #找到已删除但被进程占用的文件,并清空,释放空间