监视Linux服务器的性能

Posted zhangtian6691844

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监视Linux服务器的性能相关的知识,希望对你有一定的参考价值。

重要性能监测工具:top、vmstat、w、uptime、ps、free、iostat、netstat、/proc等

需要监视Linux服务器的性能?大多数Linux发行版都集成了一些监视工具。这些工具可以获取有关系统活动的信息的详细指标。通过这些工具,你可以发现产生系统性能问题可能存在原因。下面讨论的是一些最基本的命令,它涉及到系统分析和调试服务器等一些问题,如:
1.    找出系统瓶颈问题.
2.    磁盘 (储存) 瓶颈问题.
3.    CPU和内存瓶颈问题.
4.    网络瓶颈问题.
# 1: top – 查看活动进程的命令########################################

TOP工具能够实时显示系统中各个进程的资源占用状况。默认情况下,它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU/内存的使用情况和执行时间对任务进行排序,并每五秒钟更新一次。

常用的快捷键

Top命令为我们提供了很多有用的快捷键,如:

快捷键    用法

t           切换显示进程和CPU状态信息。

m           切换显示进程和CPU状态信息。

A           分类显示各种系统资源的消耗情况。可用于快速识别系统的性能要求极高的任务。

o           改变显示项目的顺序。

r     重新设置进程的优先级别。(系统提示用户输入需要改变的进程PID以及需要设置的优先级值。)

k            终止一个进程。(系统将提示用户输入需要终止的进程PID)

s            改变刷新的时间间隔。

u            查看指定用户的进程。


# 2: vmstat – 系统活动、硬件以及系统信息
这个命令用来报告关于内核线程、虚拟内存、磁盘、陷阱和CPU活动的统计信息。

1 2 3 4 5 6 7 8 9 10 11 # vmstat 3                                                            输出样例: procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------            r  b   swpd    free    buff  cache   si   so    bi    bo    in    cs us sy  id  wa st             0  0      0 2540988 522188 5130400    0    0     2    32    4    2  4  1 96  0  0           1  0      0 2540988 522188 5130400    0    0     0   720 1199  665  1  0 99  0  0           0  0      0 2540956 522188 5130400    0    0     0     0 1151 1569  4  1 95  0  0           0  0      0 2540956 522188 5130500    0    0     0     6 1117  439  1  0 99  0  0           0  0      0 2540940 522188 5130512    0    0     0   536 1189  932  1  0 98  0  0           0  0      0 2538444 522188 5130588    0    0     0     0 1187 1417  4  1 96  0  0           0  0      0 2490060 522188 5130640    0    0     0    18 1253 1123  5  1 94  0  0

显示内存使用情况:
# vmstat –m 

# 3: w – 找到已登陆的用户并且查看他们做了什么操作
W命令用来显示机器上最近登陆的用户信息以及他们的进程信息。

# 4: uptime – 系统已运行的时间
Uptime命令可以查看系统已经运行了多长时间。截止当前时间日期,系统已经运行了多长时间,当前登录的用户有哪些,已经在过去的1,5,15分钟,系统的平均负载值情况。

1 2 # uptime                                                              18:02:41 up 41 days, 23:42,  1 user,  load average: 0.00, 0.00, 0.00

通常被认为是最佳的负载值。系统负载值根据系统的不同而不同。对于单CPU的系统,负载值在1-3为正常,SMP的系统,负载值在6-10之间也是可以接受的。

# 5: ps – 显示进程
ps命令用来报告当前进程的快照。要选择所有进程,使用-ef选项:

只显示lighttpd的进程树:
# pgrep lighttpd                                                  
Or
# pgrep -u vivek php-cgi                                          
显示pid为55977的进程名:

# ps -p 55977 -o comm=   
                                         
找出最耗费内存的前10个进程:

# ps -auxf | sort -nr -k 4 | head -10                             
找出最耗费CPU的前10个进程:

# ps -auxf | sort -nr -k 3 | head -10

# 6: free – 查看内存的使用情况
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区.

free的输出一共有四行,第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free)。
第二行和第三行是比较让人迷惑的。这两行都是说明内存使用情况的。第一列是总量(total),第二列是使用量(used),第三列是可用量(free)。第一行的输出时从操作系统(OS)来看的。

# 7: iostat – 监视CPU平均负载值,I/O状态
该命令用于报告CPU和输入/输出设备,分区和网络文件系统(NFS)的详细统计数据。

基本使用如下:

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

# 8: mpstat – 实时系统监视工具

mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

下面只介绍mpstat与CPU相关的参数,mpstat的语法如下:

Usage: mpstat [ options... ] [ <interval> [ <count> ] ]           

Options are:                                                  

[ -P <cpu> | ALL ] [ -V ]                                     

显示每个进程对CPU的平均利用率:

# mpstat -P ALL

#9: pmap – 查看进程使用内存的情况

pmap命令用来报告进程使用对于的相应内存的情况。使用下面命令可以查出某些内存瓶颈问题的原因。

# pmap -d PID                           

显示进程号为47394的进程所用内存的信息,最后一行非常重要。

# pmap -d 47394  

#11 & #12 : netstat 和 ss – 查看网络情况

netstat命令显示网络连接,路由表,网络接口统计,伪装连接,组播成员身份。ss命令类似netstat命令的信息。            

#13: iptraf – 实时网络状况监视工具

iptraf是一款彩色的交互式的IP局域网监控工具。这是一个基于ncurses的IP LAN监视工具,它会统计网络中产生的各种数据,包括TCP信息,UDP连接数,ICMP和OSPF信息,以太网负载信息,节点统计,IP校验和错误,以及其他信息。并且提供:

Network traffic statistics by TCP connection

IP traffic statistics by network interface

Network traffic statistics by protocol

Network traffic statistics by TCP/UDP port and by packet size

Network traffic statistics by Layer2 address

#14: tcpdump – 网络状况分析工具

tcpdump用来抓包的一个的简单命令。但是,要使用该工具,你需熟悉TCP /IP协议。例如:显示网络中有关DNS的信息,请输入:

# tcpdump -i eth1 'udp port 53'     

                                   

显示去往202.54.1.5的所有ftp会话信息:

# tcpdump -i eth1 'dst 202.54.1.5 and (port 21 or 20'   


显示去往192.168.1.5的所有HTTP会话信息:

# tcpdump -ni eth0 'dst 192.168.1.5 and tcp and port http'                


使用Wireshark查看tcpdump抓包文件的详细信息,输入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80  

#15: strace – 系统调用工具

strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统呼叫及它所接收的系统信息。strace是一个有用的小工具,它可以通过跟踪系统调用来让你知道一个程序在后台所做的事情。Strace是一个基础的调试工具,在大多数 Linux系 统上默认已经安装;但是即便你不是在跟踪一个问题的时候它也是一个极好的软件。它能告诉你很多关于一个Linux程序怎样工作的信息。

#16: /Proc 文件系统
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。几个例子:

# cat /proc/cpuinfo                                                

# cat /proc/meminfo                                                

# cat /proc/zoneinfo                   

# cat /proc/mounts  

#17: Nagios – 服务器和网络信息监视工具
Nagios是一款很流行的开源系统和网络监控应用软件。你可以很轻松地用它监控所有的主机,网络设备和服务。在系统或服务状态异常时会第一时间通知网站运维人员(发出邮件或短信报警),在状态恢复正常后发出邮件或短信通知。
#18: Cacti -基于WEB的监视工具
Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。CACTI软件Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。
#19: KDE System Guard – 图形化的系统监视工具
KDE System Guard (KSysguard)是KDE的任务管理和性能监控工具。它采用client/server架构,可以监控本机也可以监控远端主机。
一篇51CTOblog博文,对KDE System Guard的介绍很详细:http://linuxshow.blog.51cto.com/1572053/371657 

#sar - 收集和报告系统状态信息

使用 sar -d 可以得到当天磁盘活动的情况

以上是关于监视Linux服务器的性能的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu 14.04中如何查看磁盘空间使用情况

Linux奇技淫巧:如何从浏览器监视Linux服务器资源

sqlserver2000配置发布、订阅服务器和分发....时生成复制监视器,但是右击复制监视器-->性能监视器时出错

linux网络命令之glances

Linux系统监控工具

如何监视Linux系统资源的使用情况