2019独角兽企业重金招聘Python工程师标准>>>

简述

本节介绍了一些查看系统信息和监测系统资源与性能的工具,使用性能监测工具对当前系统有一个基本的了解,并根据收集到的信息选择其他相应的工具,进一步分离出性能瓶颈和寻找解决办法。本节根据查看系统信息、磁盘使用和I/O监测、CPU和内存监测、网络监测进行分类,介绍几种性能监测工具和监测手段,供大家在日常工作中选择参考。

目录

一、系统信息查看

1、查看系统版本号的几个命令

2、如何在Solaris下获取内存大小

3、如何在Solaris下获取CPU速率

二、磁盘使用和I/O监测

1、检查磁盘使用状况工具df、du

2、iostat 监视磁盘命令

三、CPU和内存使用监测

1、用vmstat监测CPU和内存,vmstat列出的属性详解

2、prstat给出CPU和内存使用情况的动态注解

3、mpstat命令报告每个处理器的统计信息

4、proc工具报告某单独进程属性

5、pmap命令报告单独进程的内存空间布局情况

6、使用ps命令获取进程的内存、CPU利用状况及排序

7、uptime和w命令查看过去15分钟内系统的负载情况

8、使用top工具监测性能

9、如何增加交换空间

 

四、检查网络性能工具

1、snoop诊断网络报文工具

2、nfsstat监测NFS系统

3、netstat监测网络接口

4、Solaris下如何知道哪个进程使用了哪个端口

5、ping 诊断网络连接和阻塞问题

6、ipcs显示与内部进程通信有关的统计信息

7、traceroute显示路由到目的地主机的报文,诊断网络拥堵

8、route get ip获取通过的网关

内容

一、系统信息查看

========================================================================

1、查看系统版本号的几个命令

1)看版本号

# uname -a

SunOS sunserver1 5.8 Generic_108528-13 sun4u sparc SUNW,Sun-Fire-280R

2)看kernel版本号

# showrev

Hostname: sunserver1

Hostid: 8318005d

Release: 5.8

Kernel architecture: sun4u

Application architecture: sparc

Hardware provider: Sun_Microsystems

Domain:

Kernel version: SunOS 5.8 Generic 108528-19 January 2003

相关命令:

#hostid

#hostname

3)看安装的补丁id

#showrev –p

4)看是否安装了某个补丁

#pkginfo |grep XXXXX

========================================================================

2、如何在Solaris下获取内存大小

有以下几个命令供参考:

/usr/platform/`uname -m`/sbin/prtdiag -v | grep Memory

prtconf -v | grep Memory

如果装了GNU top,也可以直接用top命令看到。

========================================================================

3、如何在Solaris下获取CPU速率

有以下几个命令供参考:

# psrinfo -v

# psrinfo | grep on-line | wc -l 简单给出CPU数目

# /usr/platform/`uname -i`/sbin/prtdiag -v

# /usr/platform/`uname -m`/sbin/prtdiag -v

# /usr/bin/netstat -k cpu_info0

========================================================================

二、磁盘使用和I/O监测

========================================================================

1、检查磁盘使用状况工具df、du

df列出文件系统的块大小,及使用情况

# df

/                  (/dev/dsk/c0t0d0s0 ):  745246 块   667064 文件

/proc              (/proc             ):       0 块     7816 文件

/dev/fd            (fd                ):       0 块        0 文件

/etc/mnttab        (mnttab            ):       0 块        0 文件

/var/run           (swap              ): 1227264 块    54271 文件

/tmp               (swap              ): 1227264 块    54271 文件

/space             (/dev/dsk/c0t0d0s3 ): 2023574 块  1470851 文件

df –k以字节列出系统使用情况

# df -k

文件系统              千字节    用了    可用 容量      挂接在

/dev/dsk/c0t0d0s0    6191949 5819326  310704    95%    /

/proc                      0       0       0     0%    /proc

fd                         0       0       0     0%    /dev/fd

mnttab                     0       0       0     0%    /etc/mnttab

swap                  488768       0  488768     0%    /var/run

swap                  490240    1472  488768     1%    /tmp

/dev/dsk/c0t0d0s3    12530787 11518984  886496    93%    /space

列出某一目录所在的设备使用情况

# df -k /slli

文件系统              千字节    用了    可用 容量      挂接在

/dev/dsk/c0t0d0s0    6191949 5819326  310704    95%    /

du列出某一目录的使用大小

# du -s /export/home

852690  /export/home

# du -ks /export/home

426345  /export/home

列出某一目录下所有子目录及文件的大小

# du /opt

8       /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing/plaf/windo

10      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing/plaf

12      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java/swing

14      /opt/SUNWebnfs/JFileChooser-patch/com/sun/java

16      /opt/SUNWebnfs/JFileChooser-patch/com/sun

18                     /opt/SUNWebnfs/JFileChooser-patch/com

… …

========================================================================

2、iostat 监视磁盘命令

iostat命令报告磁盘的使用情况。表格中的每一行代表一个磁盘的活动信息。常用的选项有这些:

参数n    按cXtYdZ格式指定磁盘。

# iostat -n 2

tty       c0t0d0         fd0          c0t2d0          cpu

tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id

0   16 476  23    7    0   0    0    0   0    0    2  2 10 86

0   97 170  22   11    0   0    0    0   0    0    0  3  0 97

0   33  24   3    1    0   0    0    0   0    0    0  0  0 100

0   34  12   2    1    0   0    0    0   0    0    0  0  0 100

0   34   0   0    0    0   0    0    0   0    0    0  0  0 100

参数x   报告扩展统计信息。

# iostat -x

extended device statistics

device       r/s    w/s   kr/s   kw/s wait actv  svc_t  %w  %b

dad0        21.2    1.4  465.4   10.9  0.0  0.1    6.5   0  12

fd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

sd0          0.0    0.0    0.0    0.0  0.0  0.0    0.0   0   0

参数z   这个选项在Solaris 8操作环境中是新的。它使得在采样间隔中没有磁盘活动的那些行被省略掉,这样可以让输出简短一些并且突出那些有活动的磁盘。

# iostat -z 2

tty        dad0          fd0           sd0            cpu

tin tout kps tps serv  kps tps serv  kps tps serv   us sy wt id

0   16 476  23    7    0   0    0    0   0    0    2  2 10 86

0   97  12   1    7    0   0    0    0   0    0    0  0  0 100

参数p和P 报告分区前(per-partition)的I/O统计信息,当察看内存交换设备的时候有用。

# iostat -p 2

tty        dad0         dad0,a        dad0,b        dad0,c          cpu

tin tout kps tps serv  kps tps serv  kps tps serv  kps tps serv   us sy wt id

0   16 476  23    7    1   0   28    0   0   27    0   0    0    2  2 10 86

0  117  12   1    1    0   0    0    0   0    0    0   0    0    0  0  0 100

参数E   对于找出产生错误的磁盘有用。

# iostat -nE

c0t0d0          Soft Errors: 0 Hard Errors: 0 Transport Errors: 0

Model: ST320011A        Revision: 3.19     Serial No: 3HT3XQ9X

Size: 20.02GB <20019879936 bytes>

Media Error: 0 Device Not Ready: 0  No Device: 0 Recoverable: 0

Illegal Request: 0

c0t2d0          Soft Errors: 0 Hard Errors: 2 Transport Errors: 0

Vendor: LG       Product: CD-ROM CRD-8483B Revision: 1.02 Serial No:

Size: 18446744073.71GB <-1 bytes>

Media Error: 0 Device Not Ready: 2 No Device: 0 Recoverable: 0

Illegal Request: 0 Predictive Failure Analysis: 0

此外,对于磁盘镜像,可能也会影响到一些I/O性能。

========================================================================

三、CPU和内存使用监测

========================================================================

1、用vmstat监测CPU和内存,vmstat列出的是些什么属性?

# vmstat 2

procs     memory            page            disk          faults      cpu

r b w   swap  free  re  mf pi po fr de sr 1m 1m 1m 2m   in   sy   cs us sy id

0 0 0 5235888 387408 20 135 10 2  1  0  0  0  0  0  0  170  599  286  0  2 98

0 0 0 5192424 506360 2   4  0  0  0  0  0  0  0  0  0  152   67  173  0  0 100

0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  149  138  175  0  0 99

0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  131   36  146  0  0 100

0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  156   45  161  0  0 100

0 0 0 5192424 506360 0   0  0  0  0  0  0  0  0  0  0  157  101  172  0  0 100

vmstat各项:

procs:

r-->在运行队列中等待的进程数

b-->在等待io的进程数

w-->可以进入运行队列但被替换的进程

memoy

swap-->现时可用的交换内存(k表示)

free-->空闲的内存(k表示)

pages

re--》回收的页面

mf--》非严重错误的页面

pi--》进入页面数(k表示)

po--》出页面数(k表示)

fr--》空余的页面数(k表示)

de--》提前读入的页面中的未命中数

sr--》通过时钟算法扫描的页面

disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号

fault 显示每秒的中断数

in--》设备中断

sy--》系统中断

cy--》cpu交换

cpu 表示cpu的使用状态

cs--》用户进程使用的时间

sy--》系统进程使用的时间

id--》cpu空闲的时间

如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。

如果pi,po 长期不等于0,表示内存不足。

如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

CPU能力不足的例子。

# vmstat 15

procs       memory page        disk        faults cpu

r b w swap free re mf pi po fr de sr m0 m1 m2 m3 in sy cs us sy id

45 0 0 2887216 182104 3 707 449 6 455 0 80 2 6 1 0 1531 5797 983 61 30 9

58 0 0 2831312 46408 5 983 582 56 3211 0 492 0 0 0 0 1413 4797 1027 69 31 0

55 0 0 2830944 56064 2 649 656 3 806 0 121 0 0 0 0 1441 4627 989 69 31 0

57 0 0 2827704 48760 4 818 723 6 800 0 121 0 0 1 0 1606 4316 1160 66 34 0

56 0 0 2824712 47512 6 857 604 56 1736 0 261 0 0 1 0 1584 4939 1086 68 32 0

58 0 0 2813400 47056 7 856 673 33 2374 0 355 0 0 0 0 1676 5112 1114 70 30 0

60 1 0 2816712 49464 7 861 720 6 731 0 110 7 0 3 0 2329 6131 1067 64 36 0

58 0 0 2817552 48392 4 585 521 0 996 0 146 0 0 0 0 1357 6724 1059 71 29 0

在"procs"下面标着"r"的一列是等待获得CPU的进程运行队列中的进程数。"id"列是CPU空闲时间。这台机器没有足够的CPU资源以满足进程运行的需要,这可以从它的大部分CPU时间花在用户空间里看出来(看"us"列)。

这种情况解决办法,增加更多的CPU,或者,配合使用其他相关工具查出资源耗费较多的进程,对应用程序的代码作性能分析,看是否可以优化。

vmstat中的"fr"列确实反映了空闲并且没有被页面缓存所使用的内存。使用-p选项,给出更准确的页面调度行为细节。

为了确定是否有内存不足的情况存在,同时检查 ("sr",也就是扫描率)和交换分区的磁盘I/O流量(用iostat -P)。如果大量的I/O活动由文件系统产生并且需要运行页面扫描程序为I/O释放页面,"sr"列会有比较大的数值。

保存如何正常运转的样例。这样可以很容易地收集和保存每月的性能数据进行比较,如 vmstat, mpstat, iostat

========================================================================

2、prstat给出CPU和内存使用情况的一个动态注解

示例:

#prstat -cvm的输出结果非常有用。

========================================================================

3、mpstat命令报告每个处理器的统计信息

mpstat命令报告每个处理器的统计信息,表格中的每一行代表一个处理器的活动情况。

#  mpstat 5

CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl

0    3  19    0   451  327  300   11    0    0    0   322    2   2  10  86

0    1   0    0   405  303  258    3    0    0    0   176    0   0   0 100

0    0 134    0   711  456  559   21    0    0    0   622    9   8  34  49

0    2  28    0   644  434  703  143    0    0    0  1392   28  12  15  45

0    0  23    0   624  412  478   35    0    0    0   941   10  18  14  57

mpstat可以确定每一个CPU都在花时间做什么:比如,分配给系统、用户、等待、空闲时间、系统调用、锁竞争、中断、错误、交叉调用。

mpstat的"wt"列表明等待时间过多。 用户任务花时间太长。 作为你积极的维护计划的一部分,检查/var/adm/messages中有没有比如磁盘重试之类的硬件问题或者有没有额外的消息产生也是很有价值的。

大百科CPU 100%案例:

大百科SUN系统经常报CPU 100%,CPU占用最高的进程有时竟然是一些僵尸进程,杀掉后CPU立刻降下来,在/var/adm/messages中疯狂报如下信息:

Mar  3 16:45:15 dbksvr unix: [ID 340762 kern.notice] from Memory Module 1901
Mar  3 16:45:15 dbksvr unix: [ID 221138 kern.notice]  CONSIDER REPLACING THE MEMORY MODULE.
Mar  3 16:45:15 dbksvr unix: [ID 547813 kern.notice] Multiple Softerrors:
Mar  3 16:45:15 dbksvr unix: [ID 356634 kern.notice] 256 Intermittent, 0 Persistent, and 0 Sticky Softerrors accumulated

怀疑时硬件内存条问题,当事务量小时,内存用不到这条有问题的,当事务量大时,开始使用此有问题的内存造成死锁,CPU高居100%.

========================================================================

4、proc工具报告进程属性

proc是一个利用/proc的特性来报告比如这样一些进程属性的实用工具:

1)pstack -调用栈

2)pfiles -打开的文件描述符列表

3)pldd -正在运行中的进程使用的动态链接库的列表

示例:

#ps -ef

root  1838     1  0   3月 03 ?        0:00 /usr/sbin/syslogd

root  1479     1  0   3月 03 ?        0:01 ocfserv

… …

# pstack 1838

1838:   /usr/sbin/syslogd

-----------------  lwp# 1 / thread# 12  --------------------

ff217ac8 poll     (ff03bd0c, 1, ffffffff)

ff15b35c poll     (c, ff174780, 1, 2a8c8, 2b164, fe401000) + 34

ff15bc08 _thread_start (0, 0, 0, 0, 0, 0) + 40

-----------------  lwp# 2 / thread# 2  --------------------

… …

# ptree 1838

1933  /usr/dt/bin/dtlogin -daemon

6359  /usr/dt/bin/dtlogin -daemon

6380  /bin/ksh /usr/dt/bin/Xsession

6390       /usr/openwin/bin/fbconsole

… …

# pfiles 1838

1838:   /usr/sbin/syslogd

Current rlimit: 1024 file descriptors

0: S_IFCHR mode:0600 dev:136,0 ino:749016 uid:0 gid:3 rdev:97,0

O_WRONLY|O_APPEND

1: S_IFCHR mode:0666 dev:136,0 ino:749009 uid:0 gid:3 rdev:13,2

O_RDONLY|O_LARGEFILE

… …

# pldd 1838

1838:   /usr/sbin/syslogd

/usr/lib/libnsl.so.1

/usr/lib/libpthread.so.1

/usr/lib/libdoor.so.1

/usr/lib/libc.so.1

… …

========================================================================

5、pmap命令报告单独进程的内存空间布局情况

对于单独的进程,pmap命令报告单独进程的内存空间布局情况(-x选项比较有用)。

示例:

#ps –ef|grep httpd

root  1158     1  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd

daemon  1064  1063  0   3月 03 ?        0:00 /usr/lib/ab2/dweb/sunos5

tpd /usr/lib/ab2/dweb/data

nobody  1704  1158  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd

nobody  1705  1158  0   3月 03 ?        0:00 /opt/IBMHTTPD/bin/httpd

… …

#pmap –x 1710

1710:   /opt/IBMHTTPD/bin/httpd

00010000    584K read/exec         /opt/IBMHTTPD/bin/httpd

000B0000     40K read/write/exec   /opt/IBMHTTPD/bin/httpd

000BA000    208K read/write/exec     [ heap ]

FECA0000     24K read/exec         /usr/lib/nss_files.so.1

FECB6000      8K read/write/exec   /usr/lib/nss_files.so.1

FECC0000    368K read/write/shared   [ anon ]

FED20000    136K read/exec         /opt/WebSphere/AppServer/bin/libascommon.so

… …

========================================================================

6、使用ps命令获取进程的内存、CPU利用状况及排序

ps命令显示正在运行进程某一时刻的相关数据,使用ps命令获取进程的内存、CPU利用状况。用这些命令可以看到使用CPU和内存最多的进程:

1)# ps -eo pid,pcpu,args | sort +1n

CPU百分比

2)# ps -eo pid,vsz,args | sort +1n

K字节的虚拟内存

3)# /usr/ucb/ps -aux |more

# /usr/ucb/ps -aux | head

输出被排序,使用CPU和内存最多的进程排在上面。

注意:/usr/bin/ps和/usr/ucb/ps时两个不同的工具。

/usr/ucb/ps中,stat列显示了各进程的状态:

R   进程可运行

s   睡眠,不可中断

S   睡眠

I   空闲

T   停挂

H   挂起

W   被换出到磁盘上

已有 0 人发表留言,猛击->>这里<<-参与讨论

JavaEye推荐

  • 上海:天会皓闻诚聘资深Java架构师
  • 上海:天会皓闻诚聘CTO技术总监</

转载于:https://my.oschina.net/renchengyong/blog/3574

Unix平台下的常用命令技巧之资源与性能相关推荐

  1. Window平台下通过cmd命令查看端口占用、查看进程、结束进程

    Window平台下通过cmd命令查看端口占用.查看进程.结束进程 一.概述: (更好的阅读体验,请移步我的个人博客)在学习进程间通讯的时候,我们知道有一种通讯方式叫做socket.对于跨主机之间的进程 ...

  2. java dos 菜单栏_学习java之电脑的常用快捷键和DOS窗口下的常用命令

    学习java之电脑的常用快捷键和DOS窗口下的常用命令 电脑一些常用的快捷键 win快捷键: 单独按Windows:显示或隐藏 "开始"功能表 Windows+BREAK:显示&q ...

  3. ubuntu下git 常用命令

    ubuntu下git 常用命令 Git 和代码托管中心 GitHub(外网) Gitee 码云(国内网站) GitLab(局域网) 设置用户签名 git config --global user.na ...

  4. Matlab学习-常用命令技巧

    Matlab学习之常用命令技巧 1. 清除变量,保留指定变量 参考链接:matlab工作区保留或者清除部分变量 清除所有变量 clear all; 清除指定变量a clear a; 清除所有变量,保留 ...

  5. Androi--Linux下的常用命令行

    Androi--Linux下的常用命令行 安卓下面有个软件叫终端模拟器,其实就是Linux下的命令行,使用这些命令能有效处理问题. 基本知识 "/",这个英文字母斜杠指的是根目录, ...

  6. 【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

    一.Introduction 1.1 C语言标准库 1.2 历代C语言标准 1.3 主流C语言编译器 二.C语言标准库 2.1 常用标准头文件 2.2 常用标准静态库 三.windows平台 四.Li ...

  7. linux下的常用命令 + 环境配置 + 数据库安装 一步到位!

    文章目录 一.引言 1.1 开发环境(dev) 1.2 测试环境(test) 1.3 生产环境(prod) 1.4 操作系统的选择 二.Linux介绍 2.1 Linux介绍 2.2 Linux的版本 ...

  8. Linux/Unix环境下的make命令详解

    无论是在linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  9. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  10. CentOS下MySQL数据库常用命令总结 (资源)

    2019独角兽企业重金招聘Python工程师标准>>> MySQL分支 Percona和MariaDB MySQL查询过程 注意 : 在进行 MySQL 的优化之前必须要了解的就是 ...

最新文章

  1. eslint vscode 自动格式化_Vue 入门系列第二期,开发环境与 ESLint 配置
  2. CAN总线基础(二)
  3. “压扁数组”技巧(flattening the array)
  4. power(乘幂)函数剖析
  5. 2016年10月计算机网络技术,2016年10月自考计算机网络技术练习题及答案(2)
  6. linux家庭云服务器,linux服务器云(linux家用云服务器)
  7. Vue学习笔记(五)—— 状态管理Vuex
  8. 改造Python中文拼音扩展库pypinyin补充自定义声母全过程
  9. 从0成为Facebook广告高手系列教程,Facebook广告数据分析上篇
  10. 安装Bas的先决条件
  11. php 发邮件 带附件,PHP发送带有附件的电子邮件
  12. java spring server_java server之spring中的IOC如何用java实现?
  13. js获取当前日期加上30天之后的日期
  14. 测试C++代码与WebBrowser HTML的互动
  15. 中文(语音结果)的文本纠错综述 Chinese Spelling Check
  16. 物联网技术概论:第2章
  17. 软件测试工程师在不同阶段需要掌握的技能
  18. ubuntu java 7_在Ubuntu上安装Java 7
  19. 在UE4中创建新的Shading Model
  20. 利用pandas拆分单元格并进行分组聚合

热门文章

  1. 了解虚拟化,常用的虚拟化软件,虚拟化架构,kvm介绍
  2. 什么是SOCKS5代理 它的原理是什么
  3. Win7 没有声音的解决方法
  4. 制作外挂需要多高的编程技术?
  5. android8.0的电池图标,Android 8.0 电池图标 显示分析
  6. 方阵平方等于自身,这个方阵的特征值
  7. C语言实现15折线U律,Windows程序的设计(C语言)实训报告
  8. 研发质量管理工作经验总结(四)----QA的价值
  9. linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
  10. 用python预测小孩的身高_Python 孩子身高预测