liunx系统调优

liunx系统调优

1.系统的运行状况: 处理器–>内存—> 硬盘----> 网络----->程序
cpu -->MEN --> DISK --> NETWORK—>应用程序调优

性能优化的4个子系统

cpu
menmory
IO 读写
Network

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

出现以下问题,怎么解决?

1.找出系统中使用cpu最多的进程?
2.找出系统中使用内存最多的进程?
3.找出系统中对磁盘读写最多的进程?
4.找出系统中使用网络最多的进程?

1查看cpu负载相关的工具

uptime命令

[root@VM_0_5_centos]# uptime

15:06:41 up 42 days, 20:06, 1 user, load average: 0.03, 0.02, 0.05

15:06:41 当前时间
up 42 days 系统运行时间,说明此服务器连续运行了42天
1 user 当前登录用户数
load average: 0.03, 0.02, 0.05 系统负载,即任务队列平均长度,三个数值分别为1分钟 5分钟 15分钟前到现在的平均值

1.如何判断cpu负载是否过高
如果服务器的cpu为1核心,则load average中的数字 >=3负载过高,如果服务器的cpu为4核,则load average中的数字 >=12 负载过高。

运行top,然后数字键1
找出使用cpu最多的进程,按大写的P,可以按cpu使用率来排序显示

Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880940 total,   452640 free,   173844 used,  3254456 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3401964 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                                                  
 5689 root      20   0  612500  14076   2392 S   0.3  0.4 123:03.97 barad_agent                                                                                                                                                                                              
    1 root      20   0   43356   3516   2352 S   0.0  0.1   2:19.08 systemd                                                                                                                                                                                                  
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.29 kthreadd                                                                                                                                                                                                 
    3 root      20   0       0      0      0 S   0.0  0.0   0:02.01 ksoftirqd/0                                                                                                                                                                                              
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                                                             
    6 root      20   0       0      0      0 S   0.0  0.0   0:26.88 kworker/u4:0                                                                                                                                                                                             
    7 root      rt   0       0      0      0 S   0.0  0.0   0:04.31 migration/0                                                                                                                                                                                              
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                                                                                                                   
    9 root      20   0       0      0      0 S   0.0  0.0   2:16.77 rcu_sched  

按照实际使用cpu,从大到小排序显示所有进程列表
[root@centos]# ps -aux --sort -pcpu |more #按cpu降序排序
查看 -pcpu
man ps #然后搜索pcpu,找到下面内容
pcpu cpu utilization #cpu利用率

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

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1401  0.7  0.4 391592 19608 ?        Sl   Apr08  19:52 python -u bin/WALinuxAgent-2.2.38-py2.7.egg -run-exthandlers
root          1  0.0  0.1  45964  6292 ?        Ss   Apr08   0:12 /usr/lib/systemd/systemd --system --deserialize 17
root          2  0.0  0.0      0     0 ?        S    Apr08   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Apr08   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   Apr08   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    Apr08   0:03 [migration/0]
root          8  0.0  0.0      0     0 ?        S    Apr08   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    Apr08   0:39 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   Apr08   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    Apr08   0:01 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    Apr08   0:00 [watchdog/1]
root         13  0.0  0.0      0     0 ?        S    Apr08   0:03 [migration/1]
root         14  0.0  0.0      0     0 ?        S    Apr08   0:00 [ksoftirqd/1]
root         16  0.0  0.0      0     0 ?        S<   Apr08   0:00 [kworker/1:0H]
root         18  0.0  0.0      0     0 ?        S    Apr08   0:00 [kdevtmpfs]
root         19  0.0  0.0      0     0 ?        S<   Apr08   0:00 [netns]
root         20  0.0  0.0      0     0 ?        S    Apr08   0:00 [khungtaskd]
root         21  0.0  0.0      0     0 ?        S<   Apr08   0:00 [writeback]
root         22  0.0  0.0      0     0 ?        S<   Apr08   0:00 [kintegrityd]
root         23  0.0  0.0      0     0 ?        S<   Apr08   0:00 [bioset]
root         24  0.0  0.0      0     0 ?        S<   Apr08   0:00 [bioset]
root         25  0.0  0.0      0     0 ?        S<   Apr08   0:00 [bioset]
root         26  0.0  0.0      0     0 ?        S<   Apr08   0:00 [kblockd]
root         27  0.0  0.0      0     0 ?        S<   Apr08   0:00 [md]
root         28  0.0  0.0      0     0 ?        S<   Apr08   0:00 [edac-poller]
root         34  0.0  0.0      0     0 ?        S    Apr08   0:00 [kswapd0]

2.找出系统中使用内存最多的进程?
使用top命令
运行 top 然后按下大写的M 可以按内存使用率来排序

[root@centos]# top
top - 07:32:01 up 1 day, 18:06,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 122 total,   1 running, 121 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4028536 total,  2846828 free,   192812 used,   988896 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3488852 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                                                 
  1401 root      20   0  391592  19608   5588 S   0.7  0.5  19:55.48 python                                                                                                                                                                                                  
   938 root      20   0  573820  17132   6100 S   0.0  0.4   0:18.35 tuned                                                                                                                                                                                                   
   940 root      20   0  232348  14772   4572 S   0.0  0.4   0:00.73 python                                                                                                                                                                                                  
   566 polkitd   20   0  540520  11096   4688 S   0.0  0.3   0:00.76 polkitd                                                                                                                                                                                                 
  1117 root      20   0  476220   8624   6484 S   0.0  0.2   0:03.08 NetworkManager                                                                                                                                                                                          
     1 root      20   0   45964   6292   3884 S   0.0  0.2   0:12.05 systemd                                                                                                                                                                                                 
 90481 root      20   0  267920   5784   4424 S   0.0  0.1   0:00.03 sudo                                                                                                                                                                                                    
   941 root      20   0  216376   5676   4600 S   0.0  0.1   0:09.13 rsyslogd                                                                                                                                                                                                
 90421 root      20   0  160916   5532   4180 S   0.0  0.1   0:00.48 sshd                                                                                                                                                                                                    
   370 root      20   0   39228   5284   4936 S   0.0  0.1   0:02.41 systemd-journal                                                                                                                                                                                         
   400 root      20   0   47504   5076   2828 S   0.0  0.1   0:00.46 systemd-udevd                                                                                                                                                                                           
 90929 nginx     20   0   50456   4968   2416 S   0.3  0.1   0:12.86 nginx                                                                                                                                                                                                   
 17160 root      20   0   48368   4380   1848 S   0.0  0.1   0:00.03 nginx                                                                                                                                                                                                   
  1389 root      20   0  112812   4288   3264 S   0.0  0.1   0:00.03 sshd                                                                                                                                                                                                    
  1059 postfix   20   0   91888   4096   3084 S   0.0  0.1   0:00.15 qmgr                                                                                                                                                                                                    
121389 postfix   20   0   91836   4076   3068 S   0.0  0.1   0:00.01 pickup                                                                                                                                                                                                  
   396 root      20   0  119060   4004   2544 S   0.0  0.1   0:00.01 lvmetad                                                                                                                                                                                                 
 90492 root      20   0  229736   3532   2680 S   0.0  0.1   0:00.01 su                                                                                                                                                                                                      
 90493 root      20   0  116480   3256   1804 S   0.0  0.1   0:00.13 bash                                                                                                                                                                                                    
 90426 jazz      20   0  116368   3040   1684 S   0.0  0.1   0:00.08 bash                                                                                                                                                                                                    
   569 dbus      20   0   68512   2628   1924 S   0.0  0.1   0:04.87 dbus-daemon                                                                                                                                                                                             
 90425 jazz      20   0  160916   2508   1136 S   0.0  0.1   0:00.28 sshd                                                                                                                                                                                                    
   562 root      20   0   24492   2292   1712 S   0.0  0.1   0:00.04 smartd                                                                                                                                                                                                  
  1317 root      20   0  107396   2292    304 S   0.0  0.1   0:00.00 dhclient                                                                                                                                                                                                
122078 root      20   0  161980   2272   1556 R   0.0  0.1   0:00.05 top  

按照实际使用内存,从大到小排序显示所有进程
[root@centos]# ps -aux --sort -rss| more 注:-rss去掉减号就是升序排序

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1401  0.7  0.4 391592 19608 ?        Sl   Apr08  19:56 python -u bin/WALinuxAgent-2.2.38-py2.7.egg -run-exthandlers
root        938  0.0  0.4 573820 17132 ?        Ssl  Apr08   0:18 /usr/bin/python -Es /usr/sbin/tuned -l -P
root        940  0.0  0.3 232348 14772 ?        Ss   Apr08   0:00 /usr/bin/python -u /usr/sbin/waagent -daemon
polkitd     566  0.0  0.2 540520 11096 ?        Ssl  Apr08   0:00 /usr/lib/polkit-1/polkitd --no-debug
root       1117  0.0  0.2 476220  8624 ?        Ssl  Apr08   0:03 /usr/sbin/NetworkManager --no-daemon
root          1  0.0  0.1  45964  6292 ?        Ss   Apr08   0:12 /usr/lib/systemd/systemd --system --deserialize 17
root      90481  0.0  0.1 267920  5784 pts/0    S    Apr09   0:00 sudo su
root        941  0.0  0.1 216376  5676 ?        Ssl  Apr08   0:09 /usr/sbin/rsyslogd -n
root      90421  0.0  0.1 160916  5532 ?        Ss   Apr09   0:00 sshd: jazz [priv]
root        370  0.0  0.1  39228  5284 ?        Ss   Apr08   0:02 /usr/lib/systemd/systemd-journald
root        400  0.0  0.1  47504  5076 ?        Ss   Apr08   0:00 /usr/lib/systemd/systemd-udevd
nginx     90929  0.0  0.1  50456  4968 ?        S    Apr09   0:12 nginx: worker process
root      17160  0.0  0.1  48368  4380 ?        Ss   Apr08   0:00 nginx: master process nginx
root       1389  0.0  0.1 112812  4288 ?        Ss   Apr08   0:00 /usr/sbin/sshd -D
postfix    1059  0.0  0.1  91888  4096 ?        S    Apr08   0:00 qmgr -l -t unix -u
postfix  121389  0.0  0.1  91836  4076 ?        S    07:07   0:00 pickup -l -t unix -u
root        396  0.0  0.0 119060  4004 ?        Ss   Apr08   0:00 /usr/sbin/lvmetad -f
root      90492  0.0  0.0 229736  3532 pts/0    S    Apr09   0:00 su
root      90493  0.0  0.0 116480  3256 pts/0    S    Apr09   0:00 bash
jazz      90426  0.0  0.0 116368  3040 pts/0    Ss   Apr09   0:00 -bash
dbus        569  0.0  0.0  68512  2628 ?        Ssl  Apr08   0:04 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
jazz      90425  0.0  0.0 160916  2508 ?        S    Apr09   0:00 sshd: jazz@pts/0
root        562  0.0  0.0  24492  2292 ?        Ss   Apr08   0:00 /usr/sbin/smartd -n -q never
root       1317  0.0  0.0 107396  2292 ?        Ss   Apr08   0:00 /sbin/dhclient -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H Jazz-static-proxy3 eth0
root       1057  0.0  0.0  91716  2208 ?        Ss   Apr08   0:00 /usr/libexec/postfix/master -w
root     122173  0.0  0.0 157552  2048 pts/0    R+   07:35   0:00 ps -aux --sort -rss
chrony      583  0.0  0.0 117752  1832 ?        S    Apr08   0:00 /usr/sbin/chronyd
root        568  0.0  0.0  26376  1756 ?        Ss   Apr08   0:01 /usr/lib/systemd/systemd-logind
root      13901  0.0  0.0 126284  1700 ?        Ss   Apr08   0:01 /usr/sbin/crond -n
root        558  0.0  0.0  21524  1200 ?        Ss   Apr08   0:12 /usr/sbin/irqbalance --foreground
rpc         574  0.0  0.0  69220  1064 ?        Ss   Apr08   0:00 /sbin/rpcbind -w
root        937  0.0  0.0   7112   944 ?        Ss   Apr08   0:01 /usr/sbin/hypervkvpd -n
root        595  0.0  0.0  25904   932 ?        Ss   Apr08   0:00 /usr/sbin/atd -f
root        530  0.0  0.0  55508   892 ?        S

3.找出系统中对磁盘读写最多的进程?
IO调优相关查看工具
查看那个磁盘或分区最繁忙?
通过iostat命令查看IO是否存在瓶颈
常用参数
-d 仅显示磁盘统计信息
-k 以k为单位显示每秒磁盘请求数,默认为单位块
-p device | ALL 用于显示块设备及系统分区的统计信息

[root@centos]# iostat
Linux 3.10.0-862.11.6.el7.x86_64 (Jazz-static-proxy3) 	04/10/2019 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.36    0.00    0.27    0.05    0.00   99.31

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.79         1.59         7.89     242421    1200535
sdb               0.01         0.06       140.89       9745   21432804
scd0              0.00         0.00         0.00        124          0

[root@centos]# iostat -p sda -dk
Linux 3.10.0-862.11.6.el7.x86_64 (Jazz-static-proxy3) 	04/10/2019 	_x86_64_	(2 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.79         1.59         7.88     242529    1201243
sda1              0.01         0.04         0.01       5618       2068
sda2              0.76         1.55         7.87     235866    1199175

注释
tps 该设备每秒的传输次数(Indicate the number of transfers per second that were jssued to the device.)"一次传输"意思是“一次io请求”
多个逻辑请求可能会被合并为“一次IO请求”。“一次传输”请求的大小是未知的

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

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

参数
-o , only 只显示在读写硬盘的程序
-d SEC, -delay=SEC 设定显示时间间隔
按q退出

[root@centos]# iotop -o -d 3    注3  代表是3秒
Total DISK READ :	0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:	0.00 B/s | Actual DISK WRITE:       0.00 B/s

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

使用nload 监控总体带宽使用情况
使用iptraf查看每个链接与主机之间的数据,找出恶意消耗带宽最多的IP
使用nethogs找出使用带宽最多的进程

安装aload
1.先下载好aload安装包
2.安装依赖包
3.解压安装包
4.编译
5.安装

wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
yum -y install ncurses* gcc gcc-c++
tar zxvf nload-0.7.4.tar.gz
cd nload-0.7.4
./configure
make&&make install

使用命令nload

ab -n 10000 -c 2 http://www.baidu.com/index.html    #测试访问百度10000次。分两次执行

如果提示没有ab命令,ab是apache自带的测试命令
就安装一下httpd

使用iptraf查看每个链接与主机之间的数据,找出恶意消耗带宽最多的IP
iptraf命令
iptraf是一款交互式、色彩鲜艳的IP局域网监控工具。它可以显示每个连接以及主机之间传输的数据量
命令安装
yum install -y iptraf
命令使用
iptraf-ng

在运行软件之前,先监控一下流量
statistical breakdowns 统计分析----->选择统计端口上的流量: By TCP/UDP Port

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

wget https://github.com/raboof/nethogs/archive/v0.8.1.tar.gz
yum install libpcap-devel
tar zxvf v0.8.1.tar.gz
cd nethogs-0.8.1/
make && make install
nethogs

总结
系统调优4大子系统
1.找出系统中使用cpu最多的进程? top - P 或者 ps -aux --sort -pcpu
2.找出系统中使用内存最多的进程? top - M 或者 ps -aux --sort -rss
3.找出系统中对磁盘读写最多的进程? iostat 和 iotop
4.找出系统中使用网络最多的进程? nload iptraf nethogs

2019年4月10日 -------------linux学习

你可能感兴趣的:(linux基础)