Linux系统调优相关工具 ﹏ヽ暗。殇╰゛Y 2022-05-30 10:51 140阅读 0赞 系统调优概述 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时,如图: ![20180310223415765][] 找出系统中使用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 \#产生一些测试数据 查看结果: ![20180311000446338][] 当前速度为: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 查看结果: [20180310223415765]: /images/20220530/55f3f1c5446d4c9ab008e01b6c447224.png [20180311000446338]: /images/20220530/da71f1d82856437eb388f4993383acc2.png
还没有评论,来说两句吧...