您的位置:首页 > 运维架构 > Linux

Linux系统调优相关工具

2018-03-10 23:03 567 查看
系统调优概述
1. 系统的运行状况:  CPU->  MEM  ->DISK*->  NETWORK -> 应用程序调优
系统性能优化的4个子系统:
    CPU
    Memory
    IO
    Network

出现以下问题,怎么解决?
1、找出系统中使用CPU最多的进程?
2、找出系统中使用内存最多的进程?
3、找出系统中对磁盘读写最多的进程?
4、找出系统中使用网络最多的进程?

找出系统中使用CPU最多的进程?
1、查看CPU负载相关工具
uptime命令:
[root@localhost ~]# uptime
13:22:30 up 8 min,  1 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  负载过高。

经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。

任务队列的平均长度是什么?
大厅排除买票:
 

队列数为3时,如图:
 


找出系统中使用CPU最多的进程?
方法1:使用top命令
运行top , 找出使用CPU最多的进程 ,按大写的P,可以按CPU使用率来排序显示
 
按照实际使用CPU,从大到小排序显示所有进程列表
[root@stu003 ~]# ps -aux --sort -pcpu | more   #按cpu降序排序
查看 
注: -pcpu 可以显示出进程绝对路径,方便找出木马程序运行的路径。
第一次听这个:1 

二、找出系统中使用内存最多的进程?
方法1:使用top命令
运行top , 然后按下大写的M 可以按内存使用率来排序显示
 

方法2:
按照实际使用内存,从大到小排序显示所有进程列表

[root@xuegod63 ~]#  ps -aux  --sort -rss | more 内存降序排序(去掉减号就是升序)
或:
[root@xuegod63 ~]#  ps -aux  --sort -rss > a.log 

3、找出系统中对磁盘读写最多的进程
I/O调优相关查看工具   
查看系统中哪个磁盘或分区最繁忙?
对于这个服务器,8块磁盘中,哪个硬盘最繁忙?哪个分区最繁忙?
 

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

安装iostat:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/sysstat-9.0.4-18.el6.x86_64.rpm 

常用参数:
-d 仅显示磁盘统计信息
-k 以K为单位显示每秒的磁盘请求数,默认单位块.
-p device | ALL 用于显示块设备及系统分区的统计信息.

[root@xuegod63 ~]# iostat -d -k -p /dev/sda 
Linux 2.6.32-220.el6.x86_64 (xuegod63.cn) 03/20/2017 _x86_64_ (4 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               6.64       167.01        18.53     301418      33437
sda1              0.33         1.28         0.00       2317          9
sda2              6.03       164.53        18.52     296949      33428
sda3              0.18         0.80         0.00       1452          0
注:
每列含意:
kB_read/s   每秒从磁盘读入的数据量,单位为K.
kB_wrtn/s    每秒向磁盘写入的数据量,单位为K.
kB_read    读入的数据总量,单位为K.
kB_wrtn    写入的数据总量,单位为K.

测试: 给磁盘写入一些内容, 写入时尽可能不读磁盘? 
[root@xuegod63 ~]# dd if=/dev/zero  of=a.txt bs=10M  count=1000  ; sync 
读入的数据用/dev/zero , /dev/zero不会读磁盘的。
sync  #把内存中的数据快速写到磁盘上。 只做dd不执行sync,不容易看不出写入效果
这一招学到手:1

[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

公司的服务器很卡,查看CPU使用率不高,内存也够用,但就是卡,尤其是打开新程序或文件时,更卡。此时是哪出问题了? 
 
这时系统的瓶颈在哪里?
磁盘 

查看哪个进程使用磁盘读写最多?
iotop命令,查看哪个进程使用磁盘读写最多
安装:
可以通过yum install iotop 安装

[root@xuegod63 ~]# rpm -ivh /mnt/Packages/iotop-0.3.2-3.el6.noarch.rpm
参数:
-o, -only 只显示在读写硬盘的程序
-d SEC, -delay=SEC  设定显示时间间隔。 刷新时间
退出,按q或ctrl+C

例:
[root@xuegod63 ~]# iotop -o -d 1     #显示正在使用磁盘的进程
在另一个终端对磁盘进行大量读操作,执行: 
[root@xuegod63 ~]# find /
查看结果:
 
到此,已经讲了: 找出使用系统:cpu,内存,磁盘最多进程。

找出系统中使用网络最多的进程?
   windows中有流量显示, Linux有吗?  
双击后,可以查到每个进程使用的流量。
 
只是对Linux下的开源工具做了一个封装。

使用nload监控总体带宽使用情况
使用nethogs找出使用带宽最多的进程

使用nload监控总体带宽使用情况
rz 上传nload.rpm到centos7上
[root@xuegod63 ~]# rpm -ivh nload-0.7.4-1.el6.x86_64.rpm
或 
[root@iZ25b6alxstZ ~]# yum install nload -y   (在centos上,配置好epel源)

[root@xuegod63 ~]# nload   #开始监控
然后另一个终端上运行:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
[root@xuegod63 ~]# ab -n 1000 -c 2 http://www.baidu.com/index.html  #产生一些测试数据
查看结果:



 
当前速度为:11.08MBit/s  那么公司使用的带宽是几M的?  
当前带宽就是:10M 
10MBit(位) ->真正下载速度为:
1MB(字节) 

Incoming : 下载   Outgoing  :上传
 

实战2: 使用nethogs找出使用带宽最多的进程
实战情景:突然今天11:00左右,运维人员接到IDC机房电话,说你的网站流量对外输出很多,这样应该怎么办? 
 
nethogs  相当于:
 

上传到nethogs到linux上: https://pkgs.org/download/nethogs 下载nethogs

[root@xuegod63 ~]# rpm -ivh nethogs-0.8.5-1.el6.x86_64.rpm
[root@xuegod63 ~]# nethogs

在另一个终端生成一些数据:
[root@xuegod63 ~]# wget http://issuecdn.baidupcs.com/issue/netdisk/yunguanjia/BaiduNetdisk_5.5.3.exe
查看结果:
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: