linux 网络监控 优化,Linux性能优化和监控系列(一)top工具

解释服务器发生了什么——top工具

在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, Process运行信息, 如下是运行top命令后的数据显示:

top - 20:08:09 up 10 min, 1 user, load average: 0.00, 0.02, 0.01

Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3924700k total, 260016k used, 3664684k free, 13552k buffers

Swap: 4063224k total, 0k used, 4063224k free, 75816k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

6284 root 20 0 15028 1308 1000 R 0.3 0.0 0:00.03 top

1 root 20 0 19356 1580 1268 S 0.0 0.0 0:01.80 init

2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

3 root RT 0 0 0 0 S 0.0 0.0 0:00.02 migration/0

4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0

6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 migration/1

8 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1

9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1

10 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/1

用top监控CPU性能

在用top分析服务器性能时,首先注意的是load average, load average包括三个信息, 分别指最后一分钟, 最后5分钟, 最后15分钟系统平均性能, 该数值的锚固值(anchor value)是1.0. 对于一个单核CPU, 当锚固值达到1.0时, 系统会处于忙碌状态, 但应用也可以正常运行, 没有任何应用排队等待CPU.

需要注意的是load average是系统的平均性能而不是CPU的, 有可能load average远高于1.0, 但是CPU没有做任何工作, 如系统忙于等待I/O.

使系统总是工作在anchor value为1.0也许很好, 但也许没有必要, 因此在判断系统工作在anchor value为1.0时是好是坏之前, 需要系统管理员更加深入的了解特定工作量. 比如对于如下两个任务:

Task 1: while true; do true; done

Task 2: dd if=/dev/sda of=/dev/null

当执行Task 1时, Task 1会使CPU的一个核使用率达到100%, anchor value值也会超过1.0, 如果系统CPU只有一个核, 那么系统会处于完全忙碌状态, 这时新的进程不会再开始, 会被放入队列中排队, 直到有空闲的CPU资源.

当执行Task 2时, Task 2也会使anchor value大于或等于1.0, 但是这时该任务只是在等待I/O资源, CPU任然可以继续给其他进程使用.

如果系统CPU非常忙碌, 你需要通过top命令的CPU行深入的分析系统正在做什么, CPU行提供如下CPU性能信息:

us

us表示user space负载, 通常运行在user space下的应用程序由终端用户启动, 不以root权限运行, 如果us负载高, 这意味着应用程序消耗CPU高.

sy

sy表示system space负载, 通常运行在system space下的进程由操作系统内核调用, 正常情况下sy不会很高.

ni

ni表示已经启动的用nice命令调整的任务数.

id

id表示CPU空闲的时间.

wa

wa表示CPU正在等待I/O, 如果wa连续大于30, 这表示关联storage和network的I/O channel有问题,需要检查network和storage的性能问题.

hi

hi表示CPU用在处理硬件终端的时间.

si

si跟软件中断有关, 通常是些由内核创建的低优先级软件终端, 几乎很少会遇到si使用率很高.

st

st跟一个被虚拟化使用的环境有关, 在某些虚拟化环境中, 虚拟机会宿主操作系统偷取CPU时间, 如果这种情况发生, st会有使用率, 若使用率很高, 需考虑从服务器卸载虚拟机.

用top监控内存性能

top命令的Mem行跟内存和交换分区有关, Mem行包括五个参数:

total

服务器总的物理内存.

used

当前使用的总得内存, 包括buffers和cache.

free

当前没有使用的内存.

buffers

buffer跟服务器使用的write cache有关, 也包括文件系统表和一些服务器需要放在内存的结构. 所有需要写到磁盘的数据首先写到write cache, 从终端用户的角度来看, 用户使用的应用程序不需要等待数据写入. 如果系统需要更多的内存, 而不能从free的内存分配时, write cache能被刷新, 然后将write cache使用的内存给其他应用程序使用. 总之, buffer使系统变得更快.

cached

当用户从服务器请求文件时,通常文件需要从磁盘读取, 由于磁盘比内存大约慢1000倍, 因此每次从磁盘获取文件后都放到cache来加速下次读取该文件. 如果分配给cahce的内存需要给其他应用程序使用, cache可以被立即释放加入到free内存中以便使用. 对于那些读次数多的服务器,cache内存通常很高,如果cache内存低于总内存的40%, 那么服务器性能可能很慢, 这时需增加内存.

swap

swap space是在硬盘上模拟内存, 如果系统开始使用swap, 这可不好, 因为swap比内存大约慢1000倍. 但swap并不是总是不好, 如内核使用它把不需要的数据从内存移除, 以便释放更多内存空间.

监控Buffer和Cache内存

1. 重启服务器.

2. 观察当前服务器Buffer和Cache.

top - 03:17:03 up 1 min, 3 users, load average: 0.25, 0.11, 0.04

Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3924700k total, 199948k used, 3724752k free, 9448k buffers

Swap: 4063224k total, 0k used, 4063224k free, 55316k cached

3. 运行如下命令填满Cache, 并观察Cache数量.

cd /etc

for I in *

do

cat $I

done

top - 03:19:09 up 3 min, 3 users, load average: 0.09, 0.08, 0.03

Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.2%us, 0.0%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3924700k total, 212968k used, 3711732k free, 10556k buffers

Swap: 4063224k total, 0k used, 4063224k free, 65124k cached

4. 运行如下命令填满Buffer, 并观察Buffer数量.

ls -Rl / > /dev/null &

top - 03:22:07 up 6 min, 3 users, load average: 0.44, 0.22, 0.08

Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 3924700k total, 329528k used, 3595172k free, 39116k buffers

Swap: 4063224k total, 0k used, 4063224k free, 65176k cached

5. 通过如下命令清除服务器Buffer和Cache.

echo 3 > /proc/sys/vm/drop_caches

用top监控进程

PID

进程ID.

USER

启动这个进程的用户.

PR

进程的优先级.

NI

已启动进程的nice值.

VIRT

进程首次启动时要求的内存大小.

RES

常驻内存, 表示进程运行实际需要的内存, 实际内存可能比virt内存要小.

SHR

当前进程与其他进程共享的内存.

S

进程状态.

%CPU

当前进程使用的CPU时间百分比.

%MEM

当前进程使用的内存百分比.

TIME+

当前进程使用CPU周期的总时间.

COMMAND

进程命令.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值