找出系统中使用CPU最多的进程?
找出系统中使用内存最多的进程?
找出系统中对磁盘读写最多的进程?
找出系统中使用网络最多的进程?
系统的运行状况: CPU-> MEM ->DISK*-> NETWORK -> 应用程序调优。
性能优化的4个子系统:
CPU(命令top,再P)
Memory(命令top,再m)
IO(工具iostat)
Network(工具nethogs)
[root@localhost ~]# uptime 13:22:30 up 8 min, 4 users, load average: 0.14, 0.38, 0.25
12:38:33 | 当前时间 |
up 50days | 服务器连续运行50天 |
1 user | 当前登录用户数 |
load average: 0.06, 0.60, 0.48 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值 |
服务器1: load average: 0.15, 0.08, 0.01 1核
服务器2: load average: 4.15, 6.08, 6.01 1核
服务器3: load average: 10.15, 10.08, 10.01 4核
答案:2,如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。
任务队列的平均长度是什么?
队列数为3时,如图:理论上:单核心,1分钟的系统平均负载不要超过3,这个经验值。
[root@stu003 ~]# ps -aux --sort -pcpu | more #按cpu降序排序
查看 -pcpu 帮助:
[root@Hjj ~]# man ps #然后搜索 pcpu ,找到下面内容 pcpu cpu utilization # cpu利用率
注:-pcpu 和-cpu 相比,-pcpu可以显示出进程绝对路径,方便找出木马程序运行的路径。也可直接用命令top再按P。
[root@Hjj ~]# ps -aux --sort -rss | more 内存降序排序(去掉减号就是升序) 或: [root@Hjj ~]# ps -aux --sort -rss > a.log
也可直接top再按m,如下。
iostat 可以显示CPU和I/O系统的负载情况及每个磁盘分区的读写状态信息。
常用参数:
-d 仅显示磁盘统计信息;
-k 以K为单位显示每秒的磁盘请求数,默认单位块;
-p device | ALL 用于显示块设备及系统分区的统计信息;
kB_read/s 每秒从磁盘读入的数据量,单位为K;
kB_wrtn/s 每秒向磁盘写入的数据量,单位为K;
kB_read 读入的数据总量,单位为K;
kB_wrtn 写入的数据总量,单位为K。
实战场景:公司的服务器很卡,查看CPU使用率不高,内存也够用,但就是卡,尤其是打开新程序或文件时,更卡。此时是哪出问题了?
[root@Hjj ~]# iostat -p sda -dk Linux 2.6.32-220.el6.x86_64 (Hjj) 08/04/2015 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 7.25 252.33 12.99 206953 10657 sda1 0.63 2.43 0.01 1996 9 sda2 5.99 247.27 12.98 202805 10648 sda3 0.43 1.77 0.00 1452 0
给磁盘写入一些内容, 写入时尽可能不读磁盘?
[root@xuegod63 ~]# dd if=/dev/zero of=a.txt bs=10M count=1000 ; sync
读入的数据用/dev/zero ,/dev/zero不会读磁盘的。sync #把内存中的数据快速写到磁盘上。 只做dd不执行sync,不容易看不出写入效果。
[root@xuegod63 ~]# iostat -p sda -dk Linux 2.6.32-220.el6.x86_64 (xuegod63.cn) 03/03/2017 _x86_64_ (4 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 6.07 128.02 463.04 298190 1078577 sda1 0.25 0.99 0.00 2317 9 sda2 5.60 126.10 463.04 293721 1078568
[root@xuegod63 ~]# iotop -o -d 1
另一个终端对磁盘进行大量读操作,执行:
[root@xuegod63 ~]# find /
以下是结果:
[root@Hjj ~]# iotop -o -d 1 #显示正在使用磁盘的进程 Total DISK READ: 1458.61 K/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 2654 be/4 root 1458.61 K/s 0.00 B/s 0.00 % 60.62 % find / 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
实战1:使用nload监控总体带宽使用情况
实战2:使用iptraf查看每个链接与主机之间的数据,找出恶意消耗带宽最多的IP
实战3:使用nethogs找出使用带宽最多的进程
用nload打开监控,在另一个终端执行。
[root@xuegod63 ~]# ab -n 1000 -c 2 http://www.baidu.com/index.html #产生一些测试数据
iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量。
Incoming:下载,Outgoing:上传。
分析服务器上某个端口上产生的流量。实战背景: 晚上下载了一个黑客工具,想知道这个软件有没有留后门,怎么办?在运行软件之前,先监控一下流量,Statistical breakdowns. 统计分析。
nethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程。nethogs可以报告程序的进程编号(PID)、用户和路径。
实战情景:突然今天11:00左右,运维人员接到IDC机房电话,说你的网站流量对外输出很多,这样应该怎么办?