Linux系统调优相关工具

目录php

  • 系统调优4大子系统
  • 实战1:找出系统中使用CPU最多的进程?
  • 实战2:找出系统中使用内存最多的进程?
  • 实战3:找出系统中对磁盘读写最多的进程?
  • 实战4:找出系统中使用网络最多的进程?

 

系统调优概述html

1. 系统的运行情况:  CPU->  MEM  ->DISK*->  NETWORK -> 应用程序调优node

性能优化的4个子系统:linux

    CPUios

    Memoryc++

    IOapache

    Networkcentos

2. 分析是否有瓶颈(依据当前应用需求)性能优化

 

出现如下问题,怎么解决?服务器

1、找出系统中使用CPU最多的进程?

2、找出系统中使用内存最多的进程?

3、找出系统中对磁盘读写最多的进程?

4、找出系统中使用网络最多的进程?

 

1、查看CPU负载相关工具

uptime命令:

[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:找出前当系统中,CPU存在瓶颈的服务器?

服务器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,这个经验值。

 

实战1:找出系统中使用CPU最多的进程?

方法1:使用top命令

运行top , 而后数字键1

找出使用CPU最多的进程 ,按大写的P,能够按CPU使用率来排序显示

 

 

实战2:按照实际使用CPU,从大到小排序显示全部进程列表

[root@localhost ~]# ps -aux --sort -pcpu | more   #按cpu降序排序

查看 -pcpu 帮助:

[root@localhost ~]# man ps  #而后搜索 pcpu  ,找到下面内容

  pcpu         cpu utilization   # cpu利用率

注:  -pcpu 和-cpu 相比,  -pcpu 能够显示出进程绝对路径,方便找出木马程序运行的路径。

 

实战2:找出系统中使用内存最多的进程?

方法1:使用top命令

运行top , 而后按下大写的M 能够按内存使用率来排序显示,大写的P,按照内存的大小,进行排序。

方法2:

实战:按照实际使用内存,从大到小排序显示全部进程列表

[root@localhost ~]#ps -aux --sort -pcpu | more              #降序排序

[root@localhost ~]#man ps         #而后搜索pcpu,找到姓名内容。

pcpu             cpu utilization              #cpu利用率

注 : -pcpu和-cpu相比 ,-pcpu能够显示出进程绝对路径,方便找出木马程序运行的路径。

 

[root@localhost ~]#  ps -aux  --sort -rss | more 内存降序排序(去掉减号就是升序)

或:

[root@localhost ~]#  ps -aux  --sort -rss > a.log

rss              resident set size            常驻集大小

实例 : 

降序排序,CPU从大到小。

 

 

3、找出系统中对磁盘读写最多的进程

I/O调优相关查看工具  

实战1:查看哪一个磁盘或分区最繁忙?

经过iostat命令查看IO是否存在瓶颈

iostat 能够显示CPU和I/O系统的负载状况及每一个磁盘分区的读写状态信息. 

从而知道咱们系统IO 是否存在问题。

 

安装iostat:

 [root@localhost ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm

 

 

经常使用参数:

-d                     仅显示磁盘统计信息

-k                    以K为单位显示每秒的磁盘请求数,默认单位块.

-p device | ALL                   用于显示块设备及系统分区的统计信息

 

例:显示每一个分区读写速度

[root@localhost ~]# iostat -p sda -dk

Linux 2.6.32-220.el6.x86_64 (xuegod63.cn)      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

注:

每列含意:

kB_read/s               每秒从驱动器读入的数据量,单位为K.

kB_wrtn/s               每秒向驱动器写入的数据量,单位为K.

kB_read                  读入的数据总量,单位为K.

kB_wrtn                  写入的数据总量,单位为K.

方法2:

实战:按照实际使用内存,从大到小排序显示全部进程列表

[root@localhost ~]#  ps -aux  --sort -rss | more 内存降序排序(去掉减号就是升序)

或:

[root@localhost ~]#  ps -aux  --sort -rss > a.log

 

3、找出系统中对磁盘读写最多的进程

I/O调优相关查看工具  

实战1:查看哪一个磁盘或分区最繁忙?

经过iostat命令查看IO是否存在瓶颈

iostat 能够显示CPU和I/O系统的负载状况及每一个磁盘分区的读写状态信息. 

从而知道咱们系统IO 是否存在问题。

 

安装iostat:

 [root@localhost ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm

 

经常使用参数:

-d 仅显示磁盘统计信息

-k 以K为单位显示每秒的磁盘请求数,默认单位块.

-p device | ALL 用于显示块设备及系统分区的统计信息

 

例:显示每一个分区读写速度

[root@localhost ~]# iostat -p sda -dk

Linux 2.6.32-220.el6.x86_64 (xuegod63.cn)      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

注:

每列含意:

kB_read/s   每秒从驱动器读入的数据量,单位为K.

kB_wrtn/s    每秒向驱动器写入的数据量,单位为K.

kB_read    读入的数据总量,单位为K.

kB_wrtn    写入的数据总量,单位为K.

 

实战2:查看哪一个进程使用磁盘读写最多?

iotop命令,查看哪一个进程使用磁盘读写最多

实例:查看系统中使用io最多的进程

参数:

-o, -only            只显示在读写硬盘的程序

-d SEC, –delay=SEC              设定显示时间间隔

退出,按q或ctrl+C

例1:

 

安装:

[root@localhost ~]# rpm -ivh /mnt/Packages/iotop-0.3.2-3.el6.noarch.rpm

 

 [root@localhost ~]# 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

-o      #在读取的进程    -d    #时间间隔,多长时间刷新一次。

在另外一个终端执行:

[root@localhost ~]# find /

查看结果:

 

4、找出系统中使用网络最多的进程?

  单击后,能够查到每一个进程使用的流量。

 

 

实战1:使用nload监控整体带宽使用状况

实战2:使用iptraf查看每一个连接与主机之间的数据,找出恶意消耗带宽最多的IP

实战3:使用nethogs找出使用带宽最多的进程

实战1:使用nload监控整体带宽使用状况

rz 上传nload.rpm到RHEL上

[root@localhost ~]# rpm -ivh nload-0.7.4-1.el6.x86_64.rpm

wget http://www.roland-riegel.de/nload/nload-0.7.2.tar.gz

tar -zxvf nload-0.7.2.tar.gz

./configure      (编译)

常见编译报错

没有c++软件包

yum install -y gcc*              #安装全部跟gcc有关的 软件包

再次编译,而后使用echo $?命令 ,查看编译是否出错,返回0,说明没问题。

 

[root@localhost ~]# yum install nload -y   (在centos上,配置好epel源)

yum -y install ncurses*                               #nload依赖的软件包

[root@localhost ~]# nload        #开始监控

而后另外一个终端上运行:

[root@localhost ~]# ab -n 10000 -c 2 http://www.baidu.com/index.html  #产生一些测试数据

-n    # 访问10000次数              -c        #时间为2秒

若是没有ab命令 ,安装 : #yum install -y httpd    (ab在httpd自带的命令)

查看结果:

Incoming : 下载   Outgoing  :上传

 

[root@localhost ~]# rpm -ivh /mnt/Packages/iptraf-3.0.1-13.el6.x86_64.rpm

 

iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它能够显示每一个链接以及主机之间传输的数据量。

实战2:使用iptraf查看每一个连接与主机之间的数据,找出恶意消耗带宽最多的IP

 

[root@localhost ~]# yum install -y iptraf

[root@localhost ~]# iptraf             

显示下面页面,直接回车,

选择第一个,直接回车。

选择eth0网卡

 

 

 

实战3:分析服务器上某个端口上产生的流量。

实战背景: 晚上下载了一个黑客工具,想知道这个软件有没有留后门,怎么办?

在运行软件以前,先监控一下流量 。

Statistical breakdowns.  统计分析。

选择统计端口上的流量:

#/etc/initd./httpd restart                          #重启apache服务,查看是否实时检测到80 端口

 

nethogs是一款小巧的"net top"工具,能够显示每一个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面。万一出现带宽使用忽然激增的状况,用户迅速打开nethogs,就能够找到致使带宽使用激增的进程。nethogs能够报告程序的进程编号(PID)、用户和路径。

 

实战3: 使用nethogs找出使用带宽最多的进程

nload + nethogs  =

[root@localhost ~]#rpm -ivh nethogs-.8.5-1.el6.x86_64.rpm      #配好eple源

下载nethogs

解压nethogs : tar -xvf nethogs-0.8.0.tar.gz

cd nethogs

yum install -y ncurses-devel

下载依赖包: 

libpcap-devel

rpm -ivh --nodeps libpcap-devel-1.3.0-2.4.1.x86_64.rpm

#make && make install             #编译 、安装
#echo $?                #上一步骤,没问题  
0

#nethogs

打开另外一个终端。

使用wget下载东西,查看

 

 

总结

  • 系统调优4大子系统
  • 实战1:找出系统中使用CPU最多的进程   top  -》 P 或  ps -axu --sort -pcpu
  • 实战2:找出系统中使用内存最多的进程  top -》 M   或  ps -axu --sort -rss
  • 实战3:找出系统中对磁盘读写最多的进程 iostat  和 iotop

实战4:找出系统中使用网络最多的进程  nload , iptraf ,nethogs

相关文章
相关标签/搜索