DBA 常用Linux命令
2020-11-06 本文已影响0人
轻飘飘D
1.查看CPU某段时间比如7:00到10:00期间的使用率
[oracle@mppay2 ~]$ sar -s 07:00:00 -e 10:00:00
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
07:00:01 AM CPU %user %nice %system %iowait %steal %idle
07:10:01 AM all 0.39 0.00 0.81 0.11 0.00 98.68
07:20:02 AM all 0.36 0.00 0.79 0.11 0.00 98.75
07:30:01 AM all 0.36 0.00 0.79 0.10 0.00 98.75
...
09:40:01 AM all 0.39 0.00 0.79 0.11 0.00 98.71
09:50:01 AM all 0.45 0.00 0.80 0.11 0.00 98.64
Average: all 0.38 0.00 0.80 0.11 0.00 98.71
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
2.汇总连接1521端口的每个客户端IP的连接数
方法1
[oracle@mppay1 ~]$ netstat -apnT|grep 1521 |awk '{print $5}'|sort -u |grep -v 1521 |grep -v '*' |awk -F ':' '{print $4}'|uniq -c |sort -nr
4 10.0.101.177
2 10.0.101.6
2 10.0.101.123
1 10.0.101.7
1 10.0.101.175
1 10.0.101.134
1
方法2
[oracle@mppay1 ~]$ netstat -anpT|grep 1521 |awk '{print $5}'|grep -o -E '1.*:' |awk -F ':' '{print $1}' | sort |uniq -c |sort -nr
5 10.0.101.177
2 10.0.101.6
2 10.0.101.175
2 10.0.101.123
1 10.0.101.7
1 10.0.101.134
3.按监听端口1521来查询连接数据库的客户端IP
[oracle@mppay1 ~]$ netstat -anpT | grep 1521 | awk '{print $5}' | grep -o -E '1.*:' | awk -F ':' '{print $1}' | sort
10.0.101.123
10.0.101.123
10.0.101.134
10.0.101.175
10.0.101.175
10.0.101.177
10.0.101.177
10.0.101.177
10.0.101.177
10.0.101.177
10.0.101.6
10.0.101.6
10.0.101.7
4.按oracleSID(MPPAY )来查询连接数据库的客户端IP
[oracle@mppay1 ~]$ netstat -anpT | grep MPPAY | awk '{print $5}' | grep -o -E '1.*:' | awk -F ':' '{print $1}' | sort
10.0.101.123
10.0.101.123
10.0.101.134
10.0.101.177
10.0.101.177
10.0.101.177
10.0.101.177
10.0.101.6
10.0.101.6
10.0.101.7
5.查询连接1521端口的process进程数
[oracle@mppay1 ~]$ netstat -pan |grep 1521 |wc -l
15
6.查询来自某台服务器 10.0.101.6 的连接的process进程数
[oracle@mppay1 ~]$ netstat -pan |grep 10.0.101.6 |wc -l
2
7.删除几天前的文件
find /u01/app/oracle/diag/rdbms/mpmon/MPMON/trace/ -mtime +15 -name "*.*" -exec rm -Rf {} \;
--删除15天前的文件
find /mitac/mds/arch/ -ctime +15 -exec rm -rf {} \; --常用
--删除以836701255.dbf结尾,15天前被修改过的文件
find /mitac/mds/arch/ -name '*836701255.dbf' -ctime +15 -exec rm -rf {} \;
8.資源消耗監控
CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10
内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10
top命令後再輸入1,可以看到多少个cpu,
再按 shift+p 则按cpu排序,
再按 shift+m 则按内存排序
9.資源消耗查詢
[oracle@mppay2 ~]$ iostat -m --以兆為單位
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.75 0.00 0.81 0.31 0.00 98.12
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 41.18 1.49 0.38 13526302 3425779
dm-0 131.33 1.49 0.38 13519950 3416590
[oracle@mppay2 ~]$ iostat -k -- K為單位
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.75 0.00 0.81 0.31 0.00 98.12
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 41.18 1521.71 385.40 13850933657 3508007816
dm-0 131.33 1521.00 384.37 13844429749 3498599180
------------------------------------------------------------------------------
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
备注:
如果%iowait的值过高,表示硬盘存在I/O瓶颈
如果%idle值高,表示CPU较空闲
如果%idle值高但系统响应慢时,可能是CPU等待分配内存,应加大内存容量。
如果%idle值持续低于10,表明CPU处理能力相对较低,系统中最需要解决的资源是CPU。
cpu属性值说明:
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read: 读取的总数据量;
kB_wrtn:写入的总数量数据量;
10.查看设备使用率(%util)、响应时间(await)
# 【-d 显示磁盘使用情况,-x 显示详细信息 -k 以K為單位, 1 2 每1秒一次,共2次 】
[oracle@mppay2 ~]$ iostat -d -x -k 1 2
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 9.38 81.47 18.31 22.87 1521.67 385.40 92.62 0.31 7.60 4.19 10.33 1.67 6.86
dm-0 0.00 0.00 27.60 103.72 1520.96 384.36 29.02 0.09 0.66 5.77 3.84 0.52 6.85
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 48.00 0.00 29.00 0.00 272.00 18.76 0.10 3.38 0.00 3.38 1.69 4.90
dm-0 0.00 0.00 0.00 75.00 0.00 272.00 7.25 0.34 4.56 0.00 4.56 0.65 4.90
----------------------------------------------------------------
说明:
rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s
%util: 一秒中有百分之多少的时间用于 I/O
如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷
idle小于70% IO压力就较大了,一般读取速度有较多的wait。
11.查看IO信息
--如下 每1秒显示一次,一共显示3次,显示为MB
[oracle@mppay2 ~]$ iostat -d -x -m 1 3
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 9.38 81.48 18.31 22.87 1.49 0.38 92.63 0.31 7.60 4.19 10.33 1.67 6.86
dm-0 0.00 0.00 27.61 103.73 1.49 0.38 29.02 0.09 0.66 5.77 3.84 0.52 6.85
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 15.00 0.00 11.00 0.00 0.09 16.00 0.03 2.73 0.00 2.73 1.27 1.40
dm-0 0.00 0.00 0.00 25.00 0.00 0.09 7.04 0.06 2.40 0.00 2.40 0.56 1.40
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 6.00 0.00 44.00 0.00 0.11 5.09 0.12 2.66 0.00 2.66 2.50 11.00
dm-0 0.00 0.00 0.00 50.00 0.00 0.11 4.48 0.13 2.52 0.00 2.52 2.20 11.00
備註:Linux iostat命令详解
iostat常用命令格式如下:
iostat [参数] [时间] [次数]
命令参数说明如下:
-c 显示CPU使用情况
-d 显示磁盘使用情况
-k 以K为单位显示
-m 以M为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS使用情况
-p 可以报告出每块磁盘的每个分区的使用情况
-t 显示终端和CPU的信息
-x 显示详细信息
使用实例 1
[oracle@mppay2 ~]$ iostat -x
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.75 0.00 0.81 0.31 0.00 98.12
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 9.38 81.47 18.30 22.87 3043.20 770.76 92.62 0.31 7.60 4.19 10.33 1.67 6.86
dm-0 0.00 0.00 27.60 103.72 3041.77 768.70 29.02 0.09 0.66 5.77 3.84 0.52 6.85
------------------------------------------------
输出内容详解:
%user:CPU处在用户模式下的时间百分比
%nice:CPU处在带NICE值的用户模式下的时间百分比
%system:CPU处在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle:CPU空闲时间百分比
当然了,iostat命令的重点不是用来看CPU的,重点是用来监测磁盘性能的。
Device:设备名称
rrqm/s:每秒合并到设备的读取请求数
wrqm/s:每秒合并到设备的写请求数
r/s:每秒向磁盘发起的读操作数
w/s:每秒向磁盘发起的写操作数
rkB/s:每秒读K字节数
wkB/s:每秒写K字节数
avgrq-sz:平均每次设备I/O操作的数据大小
avgqu-sz:平均I/O队列长度
await:平均每次设备I/O操作的等待时间 (毫秒),一般地,系统I/O响应时间应该低于5ms,如果大于 10ms就比较大了
r_await:每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
w_await:每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
svctm:平均每次设备I/O操作的服务时间 (毫秒)(这个数据不可信!)
%util:一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比,一般地,如果该参数是100%表示设备已经接近满负荷运行了
使用实例 2
[oracle@mppay2 ~]$ iostat -d -k 2 3
Linux 2.6.32-642.el6.x86_64 (mppay2) 11/06/2020 _x86_64_ (16 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 41.18 1521.58 385.38 13850936425 3508103708
dm-0 131.32 1520.86 384.34 13844432517 3498695072
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 9.00 0.00 168.00 0 336
dm-0 46.50 0.00 168.00 0 336
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 7.00 0.00 46.00 0 92
dm-0 14.00 0.00 46.00 0 92
------------------------------------------------------------------------------
输出内容详解:
tps:每秒I/O数(即IOPS。磁盘连续读和连续写之和)
kB_read/s:每秒从磁盘读取数据大小,单位KB/s
kB_wrtn/s:每秒写入磁盘的数据的大小,单位KB/s
kB_read:从磁盘读出的数据总数,单位KB
kB_wrtn:写入磁盘的的数据总数,单位KB
性能监控指标
[root@dbs2 ~]# iostat -x -k
Linux 2.6.32-642.el6.x86_64 (dbs2.mp) 11/06/2020 _x86_64_ (56 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.94 0.00 0.22 0.02 0.00 98.83
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
scd0 0.00 0.00 0.01 0.00 0.02 0.00 8.06 0.00 57.70 57.70 0.00 57.69 0.03
sda 0.60 472.36 74.95 152.58 4482.59 2499.76 61.38 0.06 0.27 0.32 0.25 0.10 2.26
dm-0 0.00 0.00 0.09 0.61 1.12 2.43 10.21 0.00 0.74 0.47 0.78 0.13 0.01
dm-1 0.00 0.00 0.69 0.71 2.75 2.85 8.00 0.00 1.27 0.32 2.19 0.05 0.01
dm-2 0.00 0.00 0.00 0.06 0.10 0.26 10.91 0.00 3.33 0.31 3.41 0.03 0.00
dm-3 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 3.00 4.52 1.06 0.17 0.00
dm-4 0.00 0.00 0.20 1.70 1.80 6.79 9.07 0.00 0.44 0.55 0.42 0.06 0.01
dm-5 0.00 0.00 74.58 617.49 4476.82 2469.96 20.08 0.05 0.04 0.32 0.01 0.03 2.24
dm-6 0.00 0.00 0.00 4.37 0.00 17.48 8.00 0.06 13.52 4.79 13.52 0.00 0.00
------------------------------------------------------------------
在日常运维中到底需要关注哪些字段呢?下面就来说说这篇文章的重点了,我们到底该关注哪些输出内容就可以确定这台服务器是否存在IO性能瓶颈。
%iowait:如果该值较高,表示磁盘存在I/O瓶颈
await:一般地,系统I/O响应时间应该低于5ms,如果大于10ms就比较大了
avgqu-sz:如果I/O请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,
一般认为该磁盘存在I/O性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,
需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度
%util:一般地,如果该参数是100%表示设备已经接近满负荷运行了
最后,除了关注指标外,我们更需要结合部署的业务进行分析。对于磁盘随机读写频繁的业务,
比如图片存取、数据库、邮件服务器等,此类业务吗,tps才是关键点。对于顺序读写频繁的业务,
需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。
网卡流量(iftop命令)
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息、TCP/IP连接等
#安装iftop
cd /usr/local/src
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel -y
wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
tar -zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make
make install
iftop --help
[root@xag182 iftop-0.17]# ip addr
2: ens33:
[root@xag182 iftop-0.17]# iftop -N -n -i ens33