一、性能分析工具【sar】

语法: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 #找到已删除但被进程占用的文件,并清空,释放空间

©著作权归作者所有:来自51CTO博客作者落叶红的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Celery+django如何显示任务的执行进度条
  2. OpenResty 概要及原理科普
  3. 我擦!发红包遇到了微信抖动!
  4. 工具之_文本处理工具
  5. 附解决方案,小程序获取的用户信息中昵称图然变成了“微信用户”,而
  6. 什么是CPU 上下文切换
  7. 苹果电脑如何开启显示器减弱动态效果设置?
  8. 苹果Mac如何关闭右上角的Siri显示?
  9. MacBook pro的touch bar怎么显示歌词?

随机推荐

  1. RelativeLayout里常用的位置属性
  2. ArcGIS for Android 离线数据编辑原理
  3. android 多媒体数据库详解
  4. android中自定义RadioButton
  5. 控件的间距为0
  6. Android中3种方法实现back键动作
  7. javafx for android or ios ?
  8. Android系统中设置TextView的行间距(非行
  9. Android学习笔记(二三): 多页显示-Flipper的
  10. android中activity的四种加载模式