# 之前已经写过了3篇与"性能测试"有关系的Linux命令,它们分别是free、top、vmstat
# 接下来还需要把另外2个命令也写下来:netstat和iostat
最近认真地读了1篇关于"定位性能瓶颈"的文章(http://techblog.youdao.com/?p=961),所以性能这个事儿还是得一步步来,知识积累到一定程度,在运用的过程中就形成了经验。那么前面提到的free、top、vmstat、netstat、iostat都可以辅助我们干些什么呢?其实,在那篇文章里面都已经提到了:可以获得到以下各类情况,协助我们分析性能。
- CPU占用过高
- 物理内存富余量少
- 磁盘io占用过高
- 发生换入、换出过多
- 网络链接数过多
所以说,起码这5个Linux命令还是比较重要的,得把命令"展示的项"弄清楚了才行,然后再逐渐地进一步去向更高的技术迈进。
# 废话多了又不废电
# 在那篇文章里,也提到了这么几个工具:
- Jstat - 查看Java堆的占用率
-
Jstack -
- 死锁
- 死循环
- 数据结构异常
- 集中等待外部服务的响应
- Jmap - /
- Mat - 分析内存中什么对象引用了大量的对象
# 废话多了又不废电
# top的扩展用法
- shift + p :将进程按照CPU占用率从高到低排序,便于逐一排查
- shift + m:查看内存占用情况
- shift + h :观察线程级别的CPU使用分布
-------------------------以上内容参考并摘自http://techblog.youdao.com/?p=961,看吧,命令和工具加起来不到10个-------------------------
# 下面开始介绍netstat了
# 严重参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
概念
Netstat,打印"网络连接"、"路由表"、"接口状态"、"伪装连接"、"多播成员"这些与网络相关的信息。
在Linux内的1个用法
netstat
可使用的参数
#提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
输出列表内各字段的介绍
Active Internet connections |
备注 |
|
Proto |
显示连接使用的协议 |
|
Recv-Q |
接收队列 |
|
Send-Q |
发送队列 |
|
Local Address |
||
Foreign Address |
||
State |
Active UNIX domain sockets |
备注 |
|
Proto |
显示连接使用的协议 |
|
RefCnt |
连接到本套接口上的进程号 |
|
Flags |
||
Type |
套接口的类型 |
|
State |
套接口的当前状态 |
|
I-Node |
||
Path |
连接到套接口的其它进程使用的路径名 |