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学习