Linux

Linux

Consul服务域名访问时好时坏

MySQLpytoday 回复了问题 • 2 人关注 • 1 个回复 • 128 次浏览 • 2018-06-04 18:02 • 来自相关话题

关于iops的测试

Linuxyejr 回复了问题 • 2 人关注 • 1 个回复 • 300 次浏览 • 2017-12-17 22:35 • 来自相关话题

shell小招 自动 切换当前会话目录

LinuxA390_Fander 回复了问题 • 4 人关注 • 2 个回复 • 755 次浏览 • 2016-11-15 01:37 • 来自相关话题

Linux后台运行命令的三种方法

Linuxglon 发表了文章 • 0 个评论 • 511 次浏览 • 2016-04-15 23:53 • 来自相关话题

后台运行命令有下面3中方法:

1、在命令后面加 &
    有可能会在关闭当前终端的时候中断退出
 
2、使用 nohup
    如:nohup sleep 100 &
    会在当前目录生成一个 nohup.out 文件,会收集这个命令在执行过程中产生的日志
    在 crt 这些工具的某些版本也会出现在关闭当前终端的时候中断退出(参考大师兄的分享),这时候可以把命令写到脚本中,然后后台执行脚本。
    使用 jobs 命令可以看到这些后台任务
 
3、使用 screen 工具
    1)安装:yum install -y screen
    2)使用:
    step1:打开 screen 窗口:
        直接打开: screen 
        在打开 screen 窗口的时候,可以给这个窗口命名:screen -S 窗口名
    step2:在 screen 窗口执行命令
    step3:退出 screen 窗口
       使用 ctrl+a+d 暂时退出 screen 窗口,命令会在后台继续运行
       使用 ctrl + d 或者输入 exit 命令来真正退出当前的 screen 窗口
    step4:查看使用 screen 运行的后台进程列表
       screen -ls 
       或者使用 ps 工具:
       ps aux | grep -E '命令1 | 命令2 | ...' 
       # 可以查看多个在 screen 虚拟出来的终端中跑的后台进程
       # 但是使用 ps aux | grep screen 是看不到的 screen 进程的, screen 并不是进程
    step5:进入运行某个命令的 screen 窗口
       screen -r 进程ID号
       或者 
       screen -r 窗口名
    

    
  查看全部
后台运行命令有下面3中方法:

1、在命令后面加 &
    有可能会在关闭当前终端的时候中断退出
 
2、使用 nohup
    如:nohup sleep 100 &
    会在当前目录生成一个 nohup.out 文件,会收集这个命令在执行过程中产生的日志
    在 crt 这些工具的某些版本也会出现在关闭当前终端的时候中断退出(参考大师兄的分享),这时候可以把命令写到脚本中,然后后台执行脚本。
    使用 jobs 命令可以看到这些后台任务
 
3、使用 screen 工具
    1)安装:yum install -y screen
    2)使用:
    step1:打开 screen 窗口:
        直接打开: screen 
        在打开 screen 窗口的时候,可以给这个窗口命名:screen -S 窗口名
    step2:在 screen 窗口执行命令
    step3:退出 screen 窗口
       使用 ctrl+a+d 暂时退出 screen 窗口,命令会在后台继续运行
       使用 ctrl + d 或者输入 exit 命令来真正退出当前的 screen 窗口
    step4:查看使用 screen 运行的后台进程列表
       screen -ls 
       或者使用 ps 工具:
       ps aux | grep -E '命令1 | 命令2 | ...' 
       # 可以查看多个在 screen 虚拟出来的终端中跑的后台进程
       # 但是使用 ps aux | grep screen 是看不到的 screen 进程的, screen 并不是进程
    step5:进入运行某个命令的 screen 窗口
       screen -r 进程ID号
       或者 
       screen -r 窗口名
    

    
 

主站目录脚本自动更新

LinuxA128_huanggr 发表了文章 • 0 个评论 • 493 次浏览 • 2016-03-24 21:38 • 来自相关话题

今接到开发的一个要求,写个脚本,更新主站目录文件 ,要求,先把更新的文件和要更新的文件 分别备份
然后再进行更新覆盖.这样 话就不用每次更新都要人工去做繁琐的事。脚本考虑到了文件是不定的,随时会变更每一个文件。脚本运行前把更新文件目录压缩后上传到目录,运行脚本就行了。

例如开发要更新user目录下的这几个文件 :

user
├── user/access.log
└── user/public_html
├── user/public_html/css
│ ├── user/public_html/css/admin_main.css
│ └── user/public_html/css/user.css
├── user/public_html/img
│ └── user/public_html/img/spirit.png
└── user/public_html/WEB-INF
└── user/public_html/WEB-INF/jsp
└── user/public_html/WEB-INF/jsp/errorPage.jsp

#!/bin/bash


#backup changed deploy
upload=/home/loho88/upload/deploy
changed=/home/loho88/upload/changed

javaproj=/data/www/java-proj/
backup=/home/loho88/upload/backup

date1=`date +%F_%T`
cp $upload/*.zip $changed/loho_"$date1".zip
mv $upload/*.zip /tmp/lin
unzip /tmp/lin/*.zip -d $upload
wcc=`ls -l $upload|grep drw|awk '{print $9}'|wc -l`

for i in `seq $wcc`;do
ml=`ls -l $upload |grep "drw"|awk '{print $9}'|sed -n "$i"p`
mkdir $backup/deploy_"$ml"_"$date1"
cd $upload
tree -f $ml|grep "\." |awk '{print $NF}'>/tmp/aa
ls -R "$upload"/$ml/|grep "\.">/tmp/aaa
hs=`cat /tmp/aaa|wc -l`
for ii in `seq $hs`;do
wj=`sed -n "$ii"p /tmp/aaa`
wj2=`sed -n "$ii"p /tmp/aa`
cd $javaproj
cp -r -f --parents $wj2 $backup/deploy_"$ml"_"$date1"
cp -r -f "$upload"/$wj2 "$javaproj"$wj2

done
:>/tmp/aa
:>/tmp/aaa
rm -fr "$upload"/* && rm -fr /tmp/lin/*
done 查看全部
今接到开发的一个要求,写个脚本,更新主站目录文件 ,要求,先把更新的文件和要更新的文件 分别备份
然后再进行更新覆盖.这样 话就不用每次更新都要人工去做繁琐的事。脚本考虑到了文件是不定的,随时会变更每一个文件。脚本运行前把更新文件目录压缩后上传到目录,运行脚本就行了。

例如开发要更新user目录下的这几个文件 :

user
├── user/access.log
└── user/public_html
├── user/public_html/css
│ ├── user/public_html/css/admin_main.css
│ └── user/public_html/css/user.css
├── user/public_html/img
│ └── user/public_html/img/spirit.png
└── user/public_html/WEB-INF
└── user/public_html/WEB-INF/jsp
└── user/public_html/WEB-INF/jsp/errorPage.jsp

#!/bin/bash


#backup changed deploy
upload=/home/loho88/upload/deploy
changed=/home/loho88/upload/changed

javaproj=/data/www/java-proj/
backup=/home/loho88/upload/backup

date1=`date +%F_%T`
cp $upload/*.zip $changed/loho_"$date1".zip
mv $upload/*.zip /tmp/lin
unzip /tmp/lin/*.zip -d $upload
wcc=`ls -l $upload|grep drw|awk '{print $9}'|wc -l`

for i in `seq $wcc`;do
ml=`ls -l $upload |grep "drw"|awk '{print $9}'|sed -n "$i"p`
mkdir $backup/deploy_"$ml"_"$date1"
cd $upload
tree -f $ml|grep "\." |awk '{print $NF}'>/tmp/aa
ls -R "$upload"/$ml/|grep "\.">/tmp/aaa
hs=`cat /tmp/aaa|wc -l`
for ii in `seq $hs`;do
wj=`sed -n "$ii"p /tmp/aaa`
wj2=`sed -n "$ii"p /tmp/aa`
cd $javaproj
cp -r -f --parents $wj2 $backup/deploy_"$ml"_"$date1"
cp -r -f "$upload"/$wj2 "$javaproj"$wj2

done
:>/tmp/aa
:>/tmp/aaa
rm -fr "$upload"/* && rm -fr /tmp/lin/*
done

用正则表达式匹配IPv6地址

Linuxzgtlm 发表了文章 • 0 个评论 • 409 次浏览 • 2016-02-27 14:48 • 来自相关话题

先看一下IPv6地址格式:
没有压缩的时候,是8组16进制数(0-9a-fA-F),每组4个:

2001:0000:1F1F :0000:0000:0100:11A0:ADDF

为了简化其表示法, rfc2373提出每段中前面的0可以省略:

2001:0:1F1F :0:0:100:11A0:ADDF

连续的0可省略为"::",但只能出现一次。

2001:0:1F1F ::100:11A0:ADDF


没有压缩时,正则表达式:
首先构造出8组中的一组,每个十六进制重复4次:

[0-9A-Fa-f]{4}

由于每组中间用冒号隔开,所以需要第一组和后面7个以冒号开头的组。这样就构造出了一个完整的格式

[0-9A-Fa-f]{4}(:[0-9A-Fa-f]{4}){7}


省略每段中前面的0时:
基本上和之前的一样,只是每组的长度是变化的,每组长度1-4个。
首先构造出8组中的一组,每个十六进制重复1~4次:

[0-9A-Fa-f]{1,4}

完整的格式:

[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}

这个格式包含了上面的那种情况。


将连续的0用双冒号压缩时:
这种情况就比较复杂,因为如果不知道双冒号究竟压缩了几个组,也就不知道每个组重复几次。
但是当我知道冒号之前有几个组时,后面就能确定重复几个组了。
第一种情况,当双冒号出现在最开始时,最少压缩2个组,最多压缩7个组。那么双冒号后面可以有1到6组。

:(:[0-9A-Fa-f]{1,4}){1,6}

第二种情况,当双冒号出现在最后时,最少压缩2个组,最多压缩7个组。那么双冒号前面面可以有1到6组。

([0-9A-Fa-f]{1,4}:){1,6}:

第三种情况,当双冒号出现在第1组之后时,最少压缩1个组,最多压缩6个组。那么双冒号后面可以有1到6组。

([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}

第四种情况,当双冒号出现在第2组之后时,最少压缩1个组,最多压缩5个组。那么双冒号后面可以有1到5组。

([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}

之后几种情况以此类推:

([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})

最后,当出现全部是0时:

::

总结,当出现压缩时,全部情况:

(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){1,6}:
([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}
([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})
::

不压缩时:

[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}


现在所有的情况都已经包含在内,我们用分支把他们连起来:

([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)


测试一下:

ip addr show |grep -E '([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)'

    inet6 ::1/128 scope host
    inet6 2607:8700:101:72d9::88/128 scope global
    inet6 2607:8700:101:72d9::/128 scope global
 
 

 
正则表达式可视话工具:
https://jex.im/regulex/ 查看全部
先看一下IPv6地址格式:
没有压缩的时候,是8组16进制数(0-9a-fA-F),每组4个:


2001:0000:1F1F :0000:0000:0100:11A0:ADDF


为了简化其表示法, rfc2373提出每段中前面的0可以省略:


2001:0:1F1F :0:0:100:11A0:ADDF


连续的0可省略为"::",但只能出现一次。


2001:0:1F1F ::100:11A0:ADDF



没有压缩时,正则表达式:
首先构造出8组中的一组,每个十六进制重复4次:


[0-9A-Fa-f]{4}


由于每组中间用冒号隔开,所以需要第一组和后面7个以冒号开头的组。这样就构造出了一个完整的格式


[0-9A-Fa-f]{4}(:[0-9A-Fa-f]{4}){7}



省略每段中前面的0时:
基本上和之前的一样,只是每组的长度是变化的,每组长度1-4个。
首先构造出8组中的一组,每个十六进制重复1~4次:


[0-9A-Fa-f]{1,4}


完整的格式:


[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}


这个格式包含了上面的那种情况。


将连续的0用双冒号压缩时:
这种情况就比较复杂,因为如果不知道双冒号究竟压缩了几个组,也就不知道每个组重复几次。
但是当我知道冒号之前有几个组时,后面就能确定重复几个组了。
第一种情况,当双冒号出现在最开始时,最少压缩2个组,最多压缩7个组。那么双冒号后面可以有1到6组。


:(:[0-9A-Fa-f]{1,4}){1,6}


第二种情况,当双冒号出现在最后时,最少压缩2个组,最多压缩7个组。那么双冒号前面面可以有1到6组。


([0-9A-Fa-f]{1,4}:){1,6}:


第三种情况,当双冒号出现在第1组之后时,最少压缩1个组,最多压缩6个组。那么双冒号后面可以有1到6组。


([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}


第四种情况,当双冒号出现在第2组之后时,最少压缩1个组,最多压缩5个组。那么双冒号后面可以有1到5组。


([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}


之后几种情况以此类推:


([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})


最后,当出现全部是0时:


::


总结,当出现压缩时,全部情况:


(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){1,6}:
([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}
([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})
::


不压缩时:


[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}



现在所有的情况都已经包含在内,我们用分支把他们连起来:


([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)



测试一下:


ip addr show |grep -E '([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)'

    inet6 ::1/128 scope host
    inet6 2607:8700:101:72d9::88/128 scope global
    inet6 2607:8700:101:72d9::/128 scope global
 
 


 
正则表达式可视话工具:
https://jex.im/regulex/

监控磁盘I/O

Linuxggqqmmxxpp 发表了文章 • 2 个评论 • 449 次浏览 • 2016-01-15 16:32 • 来自相关话题

在很多服务器上,磁盘I/O往往会成为性能的瓶颈,监控磁盘的I/O成为了非常关键的工作。
监控I/O的命令iostat,iostat -dmx:
     -d是显示磁盘的使用状态,
     -m统计数据显示,以每秒兆字节,而不是块或千字节每秒。显示的数据只与内核2.4及更高版本有效。 
     -x显示扩展信息。
     
     Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
    sdc               0.24        36.95     1.35    2.18     0.13     0.15   163.59         0.01        3.48   0.43   0.15
    dm-0             5.18       832.51    412.64  122.02    16.36     5.10    82.22     0.04    0.08   0.12   6.58
    dm-1              0.00      0.00        417.82  954.54    16.36     5.10    32.03     0.03    0.08   0.05   6.59
    dm-2              0.00     0.00         417.82  948.78    16.36     5.10    32.17     0.03    0.00   0.05   6.60
    sda               0.00     0.00          58.53   12.62     2.26     0.62    82.92     0.03    0.41   0.63   4.51
    sdd               0.00     0.00          58.53   12.62     2.26     0.62    82.90     0.03    0.40   0.63   4.51
    sdb               0.00     0.00          58.54   12.61     2.26     0.62    82.95     0.02    0.21   0.60   4.28
    sde               0.00     0.00          58.53   12.62     2.26     0.62    82.91     0.02    0.24   0.61   4.32 

    rrqm/s     是每秒读请求的数量。
    wrqm/s    是每秒钟写请求的数量。
    r/s            每秒钟读请求完成的数量。
    w/s           每秒钟写请求完成的数量。
    rMB/s       每秒从设备读取的兆字节数。
    wMB/s      每秒从设备写入的兆字节数。
    avgrq-sz    平均请求扇区的大小。
    avgqu-sz   平均请求队列的长度。
    await         平均每次请求等待的时间。 
    svctm        平均每次请求的服务时间,本次完整IO从开始到结束响应的时间。
    %util          设备利用率。 
    
    关键是这几个参数: r/s,w/s,await,svctm,%util。
    await这列通常不超过10,svctm这列通常不超过5,util这列越低越好,最好低于50%。

    sar -d
    Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
12:10:01 AM   dev8-32      4.17     51.66     41.07     22.25      0.00      1.13      0.72      0.30
12:10:01 AM  dev253-0    268.69 131485.97   1043.90    493.25      0.74      2.76      0.82     22.15
12:10:01 AM  dev253-1    389.75 131483.37   1043.90    340.03      2.05      5.24      0.57     22.17
12:10:01 AM  dev253-2    388.59 131484.24   1043.90    341.05      2.04      5.26      0.57     22.18
12:10:01 AM    dev8-0     67.46  32881.41    258.19    491.22      0.18      2.74      2.66     17.92
12:10:01 AM   dev8-48     67.46  32868.36    262.30    491.09      0.18      2.73      2.63     17.75
12:10:01 AM   dev8-16     67.46  32867.25    256.15    490.98      0.17      2.49      2.40     16.20
12:10:01 AM   dev8-64     67.46  32868.96    267.26    491.18      0.17      2.47      2.39     16.09
12:20:01 AM   dev8-32     68.08     11.61  30696.92    451.04      1.09     16.04      0.30      2.03
12:20:01 AM  dev253-0    270.34 136112.01   1075.79    507.47      0.62      2.31      0.73     19.61
12:20:01 AM  dev253-1    402.33 136112.88   1075.79    340.99      1.09      2.71      0.49     19.63
12:20:01 AM  dev253-2    401.26 136112.01   1075.79    341.89      1.09      2.72      0.49     19.64
12:20:01 AM    dev8-0     67.85  34023.85    268.54    505.41      0.15      2.25      2.22     15.07
12:20:01 AM   dev8-48     67.85  34041.28    273.41    505.73      0.15      2.23      2.20     14.96
12:20:01 AM   dev8-16     67.85  34023.80    281.65    505.61      0.14      2.13      2.10     14.28
12:20:01 AM   dev8-64     67.85  34023.08    252.18    505.17      0.14      2.13      2.10     14.26
12:30:01 AM   dev8-32      2.21      0.00     38.06     17.25      0.00      0.58      0.31      0.07
12:30:01 AM  dev253-0    129.14  83063.41    116.79    644.11      0.41      3.17      1.37     17.72
12:30:01 AM  dev253-1    178.60  83061.68    116.79    465.73      0.59      3.29      0.99     17.74
12:30:01 AM  dev253-2    177.58  83061.68    116.79    468.40      0.59      3.31      1.00     17.75
12:30:01 AM    dev8-0     32.54  20821.80     30.72    640.87      0.10      3.05      3.05      9.92
12:30:01 AM   dev8-48     32.54  20744.40     29.76    638.46      0.10      3.08      3.08     10.02
12:30:01 AM   dev8-16     32.54  20793.47     28.81    639.91      0.10      2.93      2.92      9.51
12:30:01 AM   dev8-64     32.54  20703.74     27.51    637.08      0.09      2.89      2.89      9.39
tps也就是iops,当然是越高越好,不过当iops从4000-5000,一下子到10000了,就要考虑是不是因为索引导致的,iops就是每秒读写多少个4KB。

rd_sec/s:每秒读取扇区的数量,每个扇区是512字节。



bi=block in to mem from disk从磁盘读取字节放到内存,一个block4KB ,I/O读


bo=block out from mem to disk 从内存读取写到磁盘的字节数,I/O写  查看全部

在很多服务器上,磁盘I/O往往会成为性能的瓶颈,监控磁盘的I/O成为了非常关键的工作。
监控I/O的命令iostat,iostat -dmx:
     -d是显示磁盘的使用状态,
     -m统计数据显示,以每秒兆字节,而不是块或千字节每秒。显示的数据只与内核2.4及更高版本有效。 
     -x显示扩展信息。
     
     Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
    sdc               0.24        36.95     1.35    2.18     0.13     0.15   163.59         0.01        3.48   0.43   0.15
    dm-0             5.18       832.51    412.64  122.02    16.36     5.10    82.22     0.04    0.08   0.12   6.58
    dm-1              0.00      0.00        417.82  954.54    16.36     5.10    32.03     0.03    0.08   0.05   6.59
    dm-2              0.00     0.00         417.82  948.78    16.36     5.10    32.17     0.03    0.00   0.05   6.60
    sda               0.00     0.00          58.53   12.62     2.26     0.62    82.92     0.03    0.41   0.63   4.51
    sdd               0.00     0.00          58.53   12.62     2.26     0.62    82.90     0.03    0.40   0.63   4.51
    sdb               0.00     0.00          58.54   12.61     2.26     0.62    82.95     0.02    0.21   0.60   4.28
    sde               0.00     0.00          58.53   12.62     2.26     0.62    82.91     0.02    0.24   0.61   4.32 

    rrqm/s     是每秒读请求的数量。
    wrqm/s    是每秒钟写请求的数量。
    r/s            每秒钟读请求完成的数量。
    w/s           每秒钟写请求完成的数量。
    rMB/s       每秒从设备读取的兆字节数。
    wMB/s      每秒从设备写入的兆字节数。
    avgrq-sz    平均请求扇区的大小。
    avgqu-sz   平均请求队列的长度。
    await         平均每次请求等待的时间。 
    svctm        平均每次请求的服务时间,本次完整IO从开始到结束响应的时间。
    %util          设备利用率。 
    
    关键是这几个参数: r/s,w/s,await,svctm,%util。
    await这列通常不超过10,svctm这列通常不超过5,util这列越低越好,最好低于50%。

    sar -d
    Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
12:10:01 AM   dev8-32      4.17     51.66     41.07     22.25      0.00      1.13      0.72      0.30
12:10:01 AM  dev253-0    268.69 131485.97   1043.90    493.25      0.74      2.76      0.82     22.15
12:10:01 AM  dev253-1    389.75 131483.37   1043.90    340.03      2.05      5.24      0.57     22.17
12:10:01 AM  dev253-2    388.59 131484.24   1043.90    341.05      2.04      5.26      0.57     22.18
12:10:01 AM    dev8-0     67.46  32881.41    258.19    491.22      0.18      2.74      2.66     17.92
12:10:01 AM   dev8-48     67.46  32868.36    262.30    491.09      0.18      2.73      2.63     17.75
12:10:01 AM   dev8-16     67.46  32867.25    256.15    490.98      0.17      2.49      2.40     16.20
12:10:01 AM   dev8-64     67.46  32868.96    267.26    491.18      0.17      2.47      2.39     16.09
12:20:01 AM   dev8-32     68.08     11.61  30696.92    451.04      1.09     16.04      0.30      2.03
12:20:01 AM  dev253-0    270.34 136112.01   1075.79    507.47      0.62      2.31      0.73     19.61
12:20:01 AM  dev253-1    402.33 136112.88   1075.79    340.99      1.09      2.71      0.49     19.63
12:20:01 AM  dev253-2    401.26 136112.01   1075.79    341.89      1.09      2.72      0.49     19.64
12:20:01 AM    dev8-0     67.85  34023.85    268.54    505.41      0.15      2.25      2.22     15.07
12:20:01 AM   dev8-48     67.85  34041.28    273.41    505.73      0.15      2.23      2.20     14.96
12:20:01 AM   dev8-16     67.85  34023.80    281.65    505.61      0.14      2.13      2.10     14.28
12:20:01 AM   dev8-64     67.85  34023.08    252.18    505.17      0.14      2.13      2.10     14.26
12:30:01 AM   dev8-32      2.21      0.00     38.06     17.25      0.00      0.58      0.31      0.07
12:30:01 AM  dev253-0    129.14  83063.41    116.79    644.11      0.41      3.17      1.37     17.72
12:30:01 AM  dev253-1    178.60  83061.68    116.79    465.73      0.59      3.29      0.99     17.74
12:30:01 AM  dev253-2    177.58  83061.68    116.79    468.40      0.59      3.31      1.00     17.75
12:30:01 AM    dev8-0     32.54  20821.80     30.72    640.87      0.10      3.05      3.05      9.92
12:30:01 AM   dev8-48     32.54  20744.40     29.76    638.46      0.10      3.08      3.08     10.02
12:30:01 AM   dev8-16     32.54  20793.47     28.81    639.91      0.10      2.93      2.92      9.51
12:30:01 AM   dev8-64     32.54  20703.74     27.51    637.08      0.09      2.89      2.89      9.39
tps也就是iops,当然是越高越好,不过当iops从4000-5000,一下子到10000了,就要考虑是不是因为索引导致的,iops就是每秒读写多少个4KB。

rd_sec/s:每秒读取扇区的数量,每个扇区是512字节。



bi=block in to mem from disk从磁盘读取字节放到内存,一个block4KB ,I/O读


bo=block out from mem to disk 从内存读取写到磁盘的字节数,I/O写 

监控CPU、內存

Linuxggqqmmxxpp 发表了文章 • 1 个评论 • 430 次浏览 • 2016-01-15 16:30 • 来自相关话题

监控CPU是日常主要工作的一项,因为CPU利用率很高,有可能是服务器上可能有很多计算的SQL语句,也可能是索引没有建好或者没有建立索引导致。
        
         用top命令可以查出当前CPU使用情况。
         top - 14:29:42 up 454 days, 19:36, 33 users,  load average: 2.02, 1.70, 1.58
        Tasks: 1421 total,   1 running, 1419 sleeping,   1 stopped,   0 zombie
        Cpu(s):  1.2%us,  0.1%sy,  0.0%ni, 97.5%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st
        Mem:  132103620k total, 117597200k used, 14506420k free,   234836k buffers
        Swap: 37887992k total,  1111756k used, 36776236k free, 11139408k cached

        load average:負載情況,如果說性能是服務器能夠跑多快,那麼,負載就是能夠跑多久。
        load average: 2.02, 1.70, 1.58 這個是1分鐘、5分鐘、15分鐘的負載情況。
        該數據是根據是每間隔5秒鐘計算一次,根據活躍進程數計算出來的,如果這個值除以CPU的數目超過5說明超負荷了。
        
        CPU使用率很高原因可能是因為索引,IO使用率很高也可能是索引問題,可以考慮把訪問頻繁的數據放到redis中進行緩存,可以降低CPU、IO的負載。
        CPU一些衡量指標: 用户user%<10% 、wait%<5%、idle%<80%、IOWAIT<5%。
    
sar -p 也可以查看CPU使用情況
    
01:30:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:40:01 PM     all          0.56      0.00      0.17      1.73      0.00     97.55
01:50:01 PM     all          0.37      0.00      0.16      1.89      0.00     97.57
02:00:01 PM     all          1.02      0.00      0.18      1.29      0.00     97.52
02:10:01 PM     all          1.47      0.00      0.22      0.83      0.00     97.47
02:20:01 PM     all          2.13      0.00      0.26      0.56      0.00     97.04
02:30:01 PM     all          1.93      0.00      0.23      0.70      0.00     97.14
02:40:01 PM     all          1.75      0.00      0.17      0.83      0.00     97.25
02:50:01 PM     all          1.57      0.00      0.15      0.80      0.00     97.49
03:00:01 PM     all          1.55      0.00      0.14      0.76      0.00     97.55
03:10:01 PM     all          3.37      0.00      0.29      0.86      0.00     95.48
03:20:01 PM     all          2.96      0.00      0.26      0.82      0.00     95.96
Average:           all          2.17      0.00      0.30      0.42      0.00     97.12 

   %user是用戶CPU使用率,%system是系統CPU使用率。
   如果%user很高說明,用戶進程負載很高,可能是SQL語句的問題,可以在MySQL中用show full processlist\G來查看SQL語句執行情況,從而選擇語句進行explain查看,需要改寫的改寫,需要優化索引的優化索引。
   如果%system很高可能會導致中斷。IO比较差或者发生频繁SWAP还有网络IO很高,除了IDLE任何一列超过10说明很高,需要关注。

  內存:free -m即可監控。     
  主要關注cached、used,如果cached低,used高要注意了,可能是內存洩漏,就是沒有及時釋放使用完畢的內存。

    sar -r也可以查看內存使用情況:
    01:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01:40:01 PM  15608224 116495396     88.18    228912  10124336 107304284     63.12
    01:50:01 PM  15028680 117074940     88.62    230884  10681796 107303308     63.12
    02:00:01 PM  15007156 117096464     88.64    231896  10703256 107321572     63.13
    02:10:01 PM  14515268 117588352     89.01    232040  11143528 107349252     63.15
    02:20:01 PM  14505052 117598568     89.02    233420  11146696 107360896     63.16
    02:30:01 PM  14507368 117596252     89.02    234868  11139748 107366216     63.16
    02:40:01 PM  14487060 117616560     89.03    236304  11110168 107405800     63.18
    02:50:01 PM  14572496 117531124     88.97    237668  11050164 107371496     63.16
    03:00:01 PM  14587436 117516184     88.96    239220  11033556 107360344     63.16
    03:10:01 PM  15703372 116400248     88.11    236808   9932424 107357368     63.15
    03:20:01 PM  16501268 115602352     87.51    236868   9172400 107355456     63.15
    03:30:01 PM  16367920 115735700     87.61    239096   9285328 107386628     63.17
        Average:     17878881 114224739     86.47    179138   8503225 107470051    63.22
  查看全部
监控CPU是日常主要工作的一项,因为CPU利用率很高,有可能是服务器上可能有很多计算的SQL语句,也可能是索引没有建好或者没有建立索引导致。
        
         用top命令可以查出当前CPU使用情况。
         top - 14:29:42 up 454 days, 19:36, 33 users,  load average: 2.02, 1.70, 1.58
        Tasks: 1421 total,   1 running, 1419 sleeping,   1 stopped,   0 zombie
        Cpu(s):  1.2%us,  0.1%sy,  0.0%ni, 97.5%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st
        Mem:  132103620k total, 117597200k used, 14506420k free,   234836k buffers
        Swap: 37887992k total,  1111756k used, 36776236k free, 11139408k cached

        load average:負載情況,如果說性能是服務器能夠跑多快,那麼,負載就是能夠跑多久。
        load average: 2.02, 1.70, 1.58 這個是1分鐘、5分鐘、15分鐘的負載情況。
        該數據是根據是每間隔5秒鐘計算一次,根據活躍進程數計算出來的,如果這個值除以CPU的數目超過5說明超負荷了。
        
        CPU使用率很高原因可能是因為索引,IO使用率很高也可能是索引問題,可以考慮把訪問頻繁的數據放到redis中進行緩存,可以降低CPU、IO的負載。
        CPU一些衡量指標: 用户user%<10% 、wait%<5%、idle%<80%、IOWAIT<5%。
    
sar -p 也可以查看CPU使用情況
    
01:30:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:40:01 PM     all          0.56      0.00      0.17      1.73      0.00     97.55
01:50:01 PM     all          0.37      0.00      0.16      1.89      0.00     97.57
02:00:01 PM     all          1.02      0.00      0.18      1.29      0.00     97.52
02:10:01 PM     all          1.47      0.00      0.22      0.83      0.00     97.47
02:20:01 PM     all          2.13      0.00      0.26      0.56      0.00     97.04
02:30:01 PM     all          1.93      0.00      0.23      0.70      0.00     97.14
02:40:01 PM     all          1.75      0.00      0.17      0.83      0.00     97.25
02:50:01 PM     all          1.57      0.00      0.15      0.80      0.00     97.49
03:00:01 PM     all          1.55      0.00      0.14      0.76      0.00     97.55
03:10:01 PM     all          3.37      0.00      0.29      0.86      0.00     95.48
03:20:01 PM     all          2.96      0.00      0.26      0.82      0.00     95.96
Average:           all          2.17      0.00      0.30      0.42      0.00     97.12 

   %user是用戶CPU使用率,%system是系統CPU使用率。
   如果%user很高說明,用戶進程負載很高,可能是SQL語句的問題,可以在MySQL中用show full processlist\G來查看SQL語句執行情況,從而選擇語句進行explain查看,需要改寫的改寫,需要優化索引的優化索引。
   如果%system很高可能會導致中斷。IO比较差或者发生频繁SWAP还有网络IO很高,除了IDLE任何一列超过10说明很高,需要关注。

  內存:free -m即可監控。     
  主要關注cached、used,如果cached低,used高要注意了,可能是內存洩漏,就是沒有及時釋放使用完畢的內存。

    sar -r也可以查看內存使用情況:
    01:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01:40:01 PM  15608224 116495396     88.18    228912  10124336 107304284     63.12
    01:50:01 PM  15028680 117074940     88.62    230884  10681796 107303308     63.12
    02:00:01 PM  15007156 117096464     88.64    231896  10703256 107321572     63.13
    02:10:01 PM  14515268 117588352     89.01    232040  11143528 107349252     63.15
    02:20:01 PM  14505052 117598568     89.02    233420  11146696 107360896     63.16
    02:30:01 PM  14507368 117596252     89.02    234868  11139748 107366216     63.16
    02:40:01 PM  14487060 117616560     89.03    236304  11110168 107405800     63.18
    02:50:01 PM  14572496 117531124     88.97    237668  11050164 107371496     63.16
    03:00:01 PM  14587436 117516184     88.96    239220  11033556 107360344     63.16
    03:10:01 PM  15703372 116400248     88.11    236808   9932424 107357368     63.15
    03:20:01 PM  16501268 115602352     87.51    236868   9172400 107355456     63.15
    03:30:01 PM  16367920 115735700     87.61    239096   9285328 107386628     63.17
        Average:     17878881 114224739     86.47    179138   8503225 107470051    63.22
 

获取一年当中某一个月全部日期

LinuxA128_huanggr 回复了问题 • 2 人关注 • 2 个回复 • 486 次浏览 • 2016-01-04 16:03 • 来自相关话题

Consul服务域名访问时好时坏

回复

MySQLpytoday 回复了问题 • 2 人关注 • 1 个回复 • 128 次浏览 • 2018-06-04 18:02 • 来自相关话题

关于iops的测试

回复

Linuxyejr 回复了问题 • 2 人关注 • 1 个回复 • 300 次浏览 • 2017-12-17 22:35 • 来自相关话题

shell小招 自动 切换当前会话目录

回复

LinuxA390_Fander 回复了问题 • 4 人关注 • 2 个回复 • 755 次浏览 • 2016-11-15 01:37 • 来自相关话题

获取一年当中某一个月全部日期

回复

LinuxA128_huanggr 回复了问题 • 2 人关注 • 2 个回复 • 486 次浏览 • 2016-01-04 16:03 • 来自相关话题

Linux后台运行命令的三种方法

Linuxglon 发表了文章 • 0 个评论 • 511 次浏览 • 2016-04-15 23:53 • 来自相关话题

后台运行命令有下面3中方法:

1、在命令后面加 &
    有可能会在关闭当前终端的时候中断退出
 
2、使用 nohup
    如:nohup sleep 100 &
    会在当前目录生成一个 nohup.out 文件,会收集这个命令在执行过程中产生的日志
    在 crt 这些工具的某些版本也会出现在关闭当前终端的时候中断退出(参考大师兄的分享),这时候可以把命令写到脚本中,然后后台执行脚本。
    使用 jobs 命令可以看到这些后台任务
 
3、使用 screen 工具
    1)安装:yum install -y screen
    2)使用:
    step1:打开 screen 窗口:
        直接打开: screen 
        在打开 screen 窗口的时候,可以给这个窗口命名:screen -S 窗口名
    step2:在 screen 窗口执行命令
    step3:退出 screen 窗口
       使用 ctrl+a+d 暂时退出 screen 窗口,命令会在后台继续运行
       使用 ctrl + d 或者输入 exit 命令来真正退出当前的 screen 窗口
    step4:查看使用 screen 运行的后台进程列表
       screen -ls 
       或者使用 ps 工具:
       ps aux | grep -E '命令1 | 命令2 | ...' 
       # 可以查看多个在 screen 虚拟出来的终端中跑的后台进程
       # 但是使用 ps aux | grep screen 是看不到的 screen 进程的, screen 并不是进程
    step5:进入运行某个命令的 screen 窗口
       screen -r 进程ID号
       或者 
       screen -r 窗口名
    

    
  查看全部
后台运行命令有下面3中方法:

1、在命令后面加 &
    有可能会在关闭当前终端的时候中断退出
 
2、使用 nohup
    如:nohup sleep 100 &
    会在当前目录生成一个 nohup.out 文件,会收集这个命令在执行过程中产生的日志
    在 crt 这些工具的某些版本也会出现在关闭当前终端的时候中断退出(参考大师兄的分享),这时候可以把命令写到脚本中,然后后台执行脚本。
    使用 jobs 命令可以看到这些后台任务
 
3、使用 screen 工具
    1)安装:yum install -y screen
    2)使用:
    step1:打开 screen 窗口:
        直接打开: screen 
        在打开 screen 窗口的时候,可以给这个窗口命名:screen -S 窗口名
    step2:在 screen 窗口执行命令
    step3:退出 screen 窗口
       使用 ctrl+a+d 暂时退出 screen 窗口,命令会在后台继续运行
       使用 ctrl + d 或者输入 exit 命令来真正退出当前的 screen 窗口
    step4:查看使用 screen 运行的后台进程列表
       screen -ls 
       或者使用 ps 工具:
       ps aux | grep -E '命令1 | 命令2 | ...' 
       # 可以查看多个在 screen 虚拟出来的终端中跑的后台进程
       # 但是使用 ps aux | grep screen 是看不到的 screen 进程的, screen 并不是进程
    step5:进入运行某个命令的 screen 窗口
       screen -r 进程ID号
       或者 
       screen -r 窗口名
    

    
 

主站目录脚本自动更新

LinuxA128_huanggr 发表了文章 • 0 个评论 • 493 次浏览 • 2016-03-24 21:38 • 来自相关话题

今接到开发的一个要求,写个脚本,更新主站目录文件 ,要求,先把更新的文件和要更新的文件 分别备份
然后再进行更新覆盖.这样 话就不用每次更新都要人工去做繁琐的事。脚本考虑到了文件是不定的,随时会变更每一个文件。脚本运行前把更新文件目录压缩后上传到目录,运行脚本就行了。

例如开发要更新user目录下的这几个文件 :

user
├── user/access.log
└── user/public_html
├── user/public_html/css
│ ├── user/public_html/css/admin_main.css
│ └── user/public_html/css/user.css
├── user/public_html/img
│ └── user/public_html/img/spirit.png
└── user/public_html/WEB-INF
└── user/public_html/WEB-INF/jsp
└── user/public_html/WEB-INF/jsp/errorPage.jsp

#!/bin/bash


#backup changed deploy
upload=/home/loho88/upload/deploy
changed=/home/loho88/upload/changed

javaproj=/data/www/java-proj/
backup=/home/loho88/upload/backup

date1=`date +%F_%T`
cp $upload/*.zip $changed/loho_"$date1".zip
mv $upload/*.zip /tmp/lin
unzip /tmp/lin/*.zip -d $upload
wcc=`ls -l $upload|grep drw|awk '{print $9}'|wc -l`

for i in `seq $wcc`;do
ml=`ls -l $upload |grep "drw"|awk '{print $9}'|sed -n "$i"p`
mkdir $backup/deploy_"$ml"_"$date1"
cd $upload
tree -f $ml|grep "\." |awk '{print $NF}'>/tmp/aa
ls -R "$upload"/$ml/|grep "\.">/tmp/aaa
hs=`cat /tmp/aaa|wc -l`
for ii in `seq $hs`;do
wj=`sed -n "$ii"p /tmp/aaa`
wj2=`sed -n "$ii"p /tmp/aa`
cd $javaproj
cp -r -f --parents $wj2 $backup/deploy_"$ml"_"$date1"
cp -r -f "$upload"/$wj2 "$javaproj"$wj2

done
:>/tmp/aa
:>/tmp/aaa
rm -fr "$upload"/* && rm -fr /tmp/lin/*
done 查看全部
今接到开发的一个要求,写个脚本,更新主站目录文件 ,要求,先把更新的文件和要更新的文件 分别备份
然后再进行更新覆盖.这样 话就不用每次更新都要人工去做繁琐的事。脚本考虑到了文件是不定的,随时会变更每一个文件。脚本运行前把更新文件目录压缩后上传到目录,运行脚本就行了。

例如开发要更新user目录下的这几个文件 :

user
├── user/access.log
└── user/public_html
├── user/public_html/css
│ ├── user/public_html/css/admin_main.css
│ └── user/public_html/css/user.css
├── user/public_html/img
│ └── user/public_html/img/spirit.png
└── user/public_html/WEB-INF
└── user/public_html/WEB-INF/jsp
└── user/public_html/WEB-INF/jsp/errorPage.jsp

#!/bin/bash


#backup changed deploy
upload=/home/loho88/upload/deploy
changed=/home/loho88/upload/changed

javaproj=/data/www/java-proj/
backup=/home/loho88/upload/backup

date1=`date +%F_%T`
cp $upload/*.zip $changed/loho_"$date1".zip
mv $upload/*.zip /tmp/lin
unzip /tmp/lin/*.zip -d $upload
wcc=`ls -l $upload|grep drw|awk '{print $9}'|wc -l`

for i in `seq $wcc`;do
ml=`ls -l $upload |grep "drw"|awk '{print $9}'|sed -n "$i"p`
mkdir $backup/deploy_"$ml"_"$date1"
cd $upload
tree -f $ml|grep "\." |awk '{print $NF}'>/tmp/aa
ls -R "$upload"/$ml/|grep "\.">/tmp/aaa
hs=`cat /tmp/aaa|wc -l`
for ii in `seq $hs`;do
wj=`sed -n "$ii"p /tmp/aaa`
wj2=`sed -n "$ii"p /tmp/aa`
cd $javaproj
cp -r -f --parents $wj2 $backup/deploy_"$ml"_"$date1"
cp -r -f "$upload"/$wj2 "$javaproj"$wj2

done
:>/tmp/aa
:>/tmp/aaa
rm -fr "$upload"/* && rm -fr /tmp/lin/*
done

用正则表达式匹配IPv6地址

Linuxzgtlm 发表了文章 • 0 个评论 • 409 次浏览 • 2016-02-27 14:48 • 来自相关话题

先看一下IPv6地址格式:
没有压缩的时候,是8组16进制数(0-9a-fA-F),每组4个:

2001:0000:1F1F :0000:0000:0100:11A0:ADDF

为了简化其表示法, rfc2373提出每段中前面的0可以省略:

2001:0:1F1F :0:0:100:11A0:ADDF

连续的0可省略为"::",但只能出现一次。

2001:0:1F1F ::100:11A0:ADDF


没有压缩时,正则表达式:
首先构造出8组中的一组,每个十六进制重复4次:

[0-9A-Fa-f]{4}

由于每组中间用冒号隔开,所以需要第一组和后面7个以冒号开头的组。这样就构造出了一个完整的格式

[0-9A-Fa-f]{4}(:[0-9A-Fa-f]{4}){7}


省略每段中前面的0时:
基本上和之前的一样,只是每组的长度是变化的,每组长度1-4个。
首先构造出8组中的一组,每个十六进制重复1~4次:

[0-9A-Fa-f]{1,4}

完整的格式:

[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}

这个格式包含了上面的那种情况。


将连续的0用双冒号压缩时:
这种情况就比较复杂,因为如果不知道双冒号究竟压缩了几个组,也就不知道每个组重复几次。
但是当我知道冒号之前有几个组时,后面就能确定重复几个组了。
第一种情况,当双冒号出现在最开始时,最少压缩2个组,最多压缩7个组。那么双冒号后面可以有1到6组。

:(:[0-9A-Fa-f]{1,4}){1,6}

第二种情况,当双冒号出现在最后时,最少压缩2个组,最多压缩7个组。那么双冒号前面面可以有1到6组。

([0-9A-Fa-f]{1,4}:){1,6}:

第三种情况,当双冒号出现在第1组之后时,最少压缩1个组,最多压缩6个组。那么双冒号后面可以有1到6组。

([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}

第四种情况,当双冒号出现在第2组之后时,最少压缩1个组,最多压缩5个组。那么双冒号后面可以有1到5组。

([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}

之后几种情况以此类推:

([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})

最后,当出现全部是0时:

::

总结,当出现压缩时,全部情况:

(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){1,6}:
([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}
([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})
::

不压缩时:

[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}


现在所有的情况都已经包含在内,我们用分支把他们连起来:

([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)


测试一下:

ip addr show |grep -E '([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)'

    inet6 ::1/128 scope host
    inet6 2607:8700:101:72d9::88/128 scope global
    inet6 2607:8700:101:72d9::/128 scope global
 
 

 
正则表达式可视话工具:
https://jex.im/regulex/ 查看全部
先看一下IPv6地址格式:
没有压缩的时候,是8组16进制数(0-9a-fA-F),每组4个:


2001:0000:1F1F :0000:0000:0100:11A0:ADDF


为了简化其表示法, rfc2373提出每段中前面的0可以省略:


2001:0:1F1F :0:0:100:11A0:ADDF


连续的0可省略为"::",但只能出现一次。


2001:0:1F1F ::100:11A0:ADDF



没有压缩时,正则表达式:
首先构造出8组中的一组,每个十六进制重复4次:


[0-9A-Fa-f]{4}


由于每组中间用冒号隔开,所以需要第一组和后面7个以冒号开头的组。这样就构造出了一个完整的格式


[0-9A-Fa-f]{4}(:[0-9A-Fa-f]{4}){7}



省略每段中前面的0时:
基本上和之前的一样,只是每组的长度是变化的,每组长度1-4个。
首先构造出8组中的一组,每个十六进制重复1~4次:


[0-9A-Fa-f]{1,4}


完整的格式:


[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}


这个格式包含了上面的那种情况。


将连续的0用双冒号压缩时:
这种情况就比较复杂,因为如果不知道双冒号究竟压缩了几个组,也就不知道每个组重复几次。
但是当我知道冒号之前有几个组时,后面就能确定重复几个组了。
第一种情况,当双冒号出现在最开始时,最少压缩2个组,最多压缩7个组。那么双冒号后面可以有1到6组。


:(:[0-9A-Fa-f]{1,4}){1,6}


第二种情况,当双冒号出现在最后时,最少压缩2个组,最多压缩7个组。那么双冒号前面面可以有1到6组。


([0-9A-Fa-f]{1,4}:){1,6}:


第三种情况,当双冒号出现在第1组之后时,最少压缩1个组,最多压缩6个组。那么双冒号后面可以有1到6组。


([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}


第四种情况,当双冒号出现在第2组之后时,最少压缩1个组,最多压缩5个组。那么双冒号后面可以有1到5组。


([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}


之后几种情况以此类推:


([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})


最后,当出现全部是0时:


::


总结,当出现压缩时,全部情况:


(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){1,6}:
([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6}
([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5}
([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4}
([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3}
([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2}
([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4})
::


不压缩时:


[0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7}



现在所有的情况都已经包含在内,我们用分支把他们连起来:


([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)



测试一下:


ip addr show |grep -E '([0-9A-Fa-f]{1,4}(:[0-9A-Fa-f]{1,4}){7})|(:(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){1,6}:)|(([0-9A-Fa-f]{1,4}):(:[0-9A-Fa-f]{1,4}){1,6})|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){1,5})|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}))|(::)'

    inet6 ::1/128 scope host
    inet6 2607:8700:101:72d9::88/128 scope global
    inet6 2607:8700:101:72d9::/128 scope global
 
 


 
正则表达式可视话工具:
https://jex.im/regulex/

监控磁盘I/O

Linuxggqqmmxxpp 发表了文章 • 2 个评论 • 449 次浏览 • 2016-01-15 16:32 • 来自相关话题

在很多服务器上,磁盘I/O往往会成为性能的瓶颈,监控磁盘的I/O成为了非常关键的工作。
监控I/O的命令iostat,iostat -dmx:
     -d是显示磁盘的使用状态,
     -m统计数据显示,以每秒兆字节,而不是块或千字节每秒。显示的数据只与内核2.4及更高版本有效。 
     -x显示扩展信息。
     
     Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
    sdc               0.24        36.95     1.35    2.18     0.13     0.15   163.59         0.01        3.48   0.43   0.15
    dm-0             5.18       832.51    412.64  122.02    16.36     5.10    82.22     0.04    0.08   0.12   6.58
    dm-1              0.00      0.00        417.82  954.54    16.36     5.10    32.03     0.03    0.08   0.05   6.59
    dm-2              0.00     0.00         417.82  948.78    16.36     5.10    32.17     0.03    0.00   0.05   6.60
    sda               0.00     0.00          58.53   12.62     2.26     0.62    82.92     0.03    0.41   0.63   4.51
    sdd               0.00     0.00          58.53   12.62     2.26     0.62    82.90     0.03    0.40   0.63   4.51
    sdb               0.00     0.00          58.54   12.61     2.26     0.62    82.95     0.02    0.21   0.60   4.28
    sde               0.00     0.00          58.53   12.62     2.26     0.62    82.91     0.02    0.24   0.61   4.32 

    rrqm/s     是每秒读请求的数量。
    wrqm/s    是每秒钟写请求的数量。
    r/s            每秒钟读请求完成的数量。
    w/s           每秒钟写请求完成的数量。
    rMB/s       每秒从设备读取的兆字节数。
    wMB/s      每秒从设备写入的兆字节数。
    avgrq-sz    平均请求扇区的大小。
    avgqu-sz   平均请求队列的长度。
    await         平均每次请求等待的时间。 
    svctm        平均每次请求的服务时间,本次完整IO从开始到结束响应的时间。
    %util          设备利用率。 
    
    关键是这几个参数: r/s,w/s,await,svctm,%util。
    await这列通常不超过10,svctm这列通常不超过5,util这列越低越好,最好低于50%。

    sar -d
    Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
12:10:01 AM   dev8-32      4.17     51.66     41.07     22.25      0.00      1.13      0.72      0.30
12:10:01 AM  dev253-0    268.69 131485.97   1043.90    493.25      0.74      2.76      0.82     22.15
12:10:01 AM  dev253-1    389.75 131483.37   1043.90    340.03      2.05      5.24      0.57     22.17
12:10:01 AM  dev253-2    388.59 131484.24   1043.90    341.05      2.04      5.26      0.57     22.18
12:10:01 AM    dev8-0     67.46  32881.41    258.19    491.22      0.18      2.74      2.66     17.92
12:10:01 AM   dev8-48     67.46  32868.36    262.30    491.09      0.18      2.73      2.63     17.75
12:10:01 AM   dev8-16     67.46  32867.25    256.15    490.98      0.17      2.49      2.40     16.20
12:10:01 AM   dev8-64     67.46  32868.96    267.26    491.18      0.17      2.47      2.39     16.09
12:20:01 AM   dev8-32     68.08     11.61  30696.92    451.04      1.09     16.04      0.30      2.03
12:20:01 AM  dev253-0    270.34 136112.01   1075.79    507.47      0.62      2.31      0.73     19.61
12:20:01 AM  dev253-1    402.33 136112.88   1075.79    340.99      1.09      2.71      0.49     19.63
12:20:01 AM  dev253-2    401.26 136112.01   1075.79    341.89      1.09      2.72      0.49     19.64
12:20:01 AM    dev8-0     67.85  34023.85    268.54    505.41      0.15      2.25      2.22     15.07
12:20:01 AM   dev8-48     67.85  34041.28    273.41    505.73      0.15      2.23      2.20     14.96
12:20:01 AM   dev8-16     67.85  34023.80    281.65    505.61      0.14      2.13      2.10     14.28
12:20:01 AM   dev8-64     67.85  34023.08    252.18    505.17      0.14      2.13      2.10     14.26
12:30:01 AM   dev8-32      2.21      0.00     38.06     17.25      0.00      0.58      0.31      0.07
12:30:01 AM  dev253-0    129.14  83063.41    116.79    644.11      0.41      3.17      1.37     17.72
12:30:01 AM  dev253-1    178.60  83061.68    116.79    465.73      0.59      3.29      0.99     17.74
12:30:01 AM  dev253-2    177.58  83061.68    116.79    468.40      0.59      3.31      1.00     17.75
12:30:01 AM    dev8-0     32.54  20821.80     30.72    640.87      0.10      3.05      3.05      9.92
12:30:01 AM   dev8-48     32.54  20744.40     29.76    638.46      0.10      3.08      3.08     10.02
12:30:01 AM   dev8-16     32.54  20793.47     28.81    639.91      0.10      2.93      2.92      9.51
12:30:01 AM   dev8-64     32.54  20703.74     27.51    637.08      0.09      2.89      2.89      9.39
tps也就是iops,当然是越高越好,不过当iops从4000-5000,一下子到10000了,就要考虑是不是因为索引导致的,iops就是每秒读写多少个4KB。

rd_sec/s:每秒读取扇区的数量,每个扇区是512字节。



bi=block in to mem from disk从磁盘读取字节放到内存,一个block4KB ,I/O读


bo=block out from mem to disk 从内存读取写到磁盘的字节数,I/O写  查看全部

在很多服务器上,磁盘I/O往往会成为性能的瓶颈,监控磁盘的I/O成为了非常关键的工作。
监控I/O的命令iostat,iostat -dmx:
     -d是显示磁盘的使用状态,
     -m统计数据显示,以每秒兆字节,而不是块或千字节每秒。显示的数据只与内核2.4及更高版本有效。 
     -x显示扩展信息。
     
     Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
    sdc               0.24        36.95     1.35    2.18     0.13     0.15   163.59         0.01        3.48   0.43   0.15
    dm-0             5.18       832.51    412.64  122.02    16.36     5.10    82.22     0.04    0.08   0.12   6.58
    dm-1              0.00      0.00        417.82  954.54    16.36     5.10    32.03     0.03    0.08   0.05   6.59
    dm-2              0.00     0.00         417.82  948.78    16.36     5.10    32.17     0.03    0.00   0.05   6.60
    sda               0.00     0.00          58.53   12.62     2.26     0.62    82.92     0.03    0.41   0.63   4.51
    sdd               0.00     0.00          58.53   12.62     2.26     0.62    82.90     0.03    0.40   0.63   4.51
    sdb               0.00     0.00          58.54   12.61     2.26     0.62    82.95     0.02    0.21   0.60   4.28
    sde               0.00     0.00          58.53   12.62     2.26     0.62    82.91     0.02    0.24   0.61   4.32 

    rrqm/s     是每秒读请求的数量。
    wrqm/s    是每秒钟写请求的数量。
    r/s            每秒钟读请求完成的数量。
    w/s           每秒钟写请求完成的数量。
    rMB/s       每秒从设备读取的兆字节数。
    wMB/s      每秒从设备写入的兆字节数。
    avgrq-sz    平均请求扇区的大小。
    avgqu-sz   平均请求队列的长度。
    await         平均每次请求等待的时间。 
    svctm        平均每次请求的服务时间,本次完整IO从开始到结束响应的时间。
    %util          设备利用率。 
    
    关键是这几个参数: r/s,w/s,await,svctm,%util。
    await这列通常不超过10,svctm这列通常不超过5,util这列越低越好,最好低于50%。

    sar -d
    Linux 2.6.32-358.el6.x86_64 (ck)    01/15/2016      _x86_64_        (48 CPU)
12:00:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
12:10:01 AM   dev8-32      4.17     51.66     41.07     22.25      0.00      1.13      0.72      0.30
12:10:01 AM  dev253-0    268.69 131485.97   1043.90    493.25      0.74      2.76      0.82     22.15
12:10:01 AM  dev253-1    389.75 131483.37   1043.90    340.03      2.05      5.24      0.57     22.17
12:10:01 AM  dev253-2    388.59 131484.24   1043.90    341.05      2.04      5.26      0.57     22.18
12:10:01 AM    dev8-0     67.46  32881.41    258.19    491.22      0.18      2.74      2.66     17.92
12:10:01 AM   dev8-48     67.46  32868.36    262.30    491.09      0.18      2.73      2.63     17.75
12:10:01 AM   dev8-16     67.46  32867.25    256.15    490.98      0.17      2.49      2.40     16.20
12:10:01 AM   dev8-64     67.46  32868.96    267.26    491.18      0.17      2.47      2.39     16.09
12:20:01 AM   dev8-32     68.08     11.61  30696.92    451.04      1.09     16.04      0.30      2.03
12:20:01 AM  dev253-0    270.34 136112.01   1075.79    507.47      0.62      2.31      0.73     19.61
12:20:01 AM  dev253-1    402.33 136112.88   1075.79    340.99      1.09      2.71      0.49     19.63
12:20:01 AM  dev253-2    401.26 136112.01   1075.79    341.89      1.09      2.72      0.49     19.64
12:20:01 AM    dev8-0     67.85  34023.85    268.54    505.41      0.15      2.25      2.22     15.07
12:20:01 AM   dev8-48     67.85  34041.28    273.41    505.73      0.15      2.23      2.20     14.96
12:20:01 AM   dev8-16     67.85  34023.80    281.65    505.61      0.14      2.13      2.10     14.28
12:20:01 AM   dev8-64     67.85  34023.08    252.18    505.17      0.14      2.13      2.10     14.26
12:30:01 AM   dev8-32      2.21      0.00     38.06     17.25      0.00      0.58      0.31      0.07
12:30:01 AM  dev253-0    129.14  83063.41    116.79    644.11      0.41      3.17      1.37     17.72
12:30:01 AM  dev253-1    178.60  83061.68    116.79    465.73      0.59      3.29      0.99     17.74
12:30:01 AM  dev253-2    177.58  83061.68    116.79    468.40      0.59      3.31      1.00     17.75
12:30:01 AM    dev8-0     32.54  20821.80     30.72    640.87      0.10      3.05      3.05      9.92
12:30:01 AM   dev8-48     32.54  20744.40     29.76    638.46      0.10      3.08      3.08     10.02
12:30:01 AM   dev8-16     32.54  20793.47     28.81    639.91      0.10      2.93      2.92      9.51
12:30:01 AM   dev8-64     32.54  20703.74     27.51    637.08      0.09      2.89      2.89      9.39
tps也就是iops,当然是越高越好,不过当iops从4000-5000,一下子到10000了,就要考虑是不是因为索引导致的,iops就是每秒读写多少个4KB。

rd_sec/s:每秒读取扇区的数量,每个扇区是512字节。



bi=block in to mem from disk从磁盘读取字节放到内存,一个block4KB ,I/O读


bo=block out from mem to disk 从内存读取写到磁盘的字节数,I/O写 

监控CPU、內存

Linuxggqqmmxxpp 发表了文章 • 1 个评论 • 430 次浏览 • 2016-01-15 16:30 • 来自相关话题

监控CPU是日常主要工作的一项,因为CPU利用率很高,有可能是服务器上可能有很多计算的SQL语句,也可能是索引没有建好或者没有建立索引导致。
        
         用top命令可以查出当前CPU使用情况。
         top - 14:29:42 up 454 days, 19:36, 33 users,  load average: 2.02, 1.70, 1.58
        Tasks: 1421 total,   1 running, 1419 sleeping,   1 stopped,   0 zombie
        Cpu(s):  1.2%us,  0.1%sy,  0.0%ni, 97.5%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st
        Mem:  132103620k total, 117597200k used, 14506420k free,   234836k buffers
        Swap: 37887992k total,  1111756k used, 36776236k free, 11139408k cached

        load average:負載情況,如果說性能是服務器能夠跑多快,那麼,負載就是能夠跑多久。
        load average: 2.02, 1.70, 1.58 這個是1分鐘、5分鐘、15分鐘的負載情況。
        該數據是根據是每間隔5秒鐘計算一次,根據活躍進程數計算出來的,如果這個值除以CPU的數目超過5說明超負荷了。
        
        CPU使用率很高原因可能是因為索引,IO使用率很高也可能是索引問題,可以考慮把訪問頻繁的數據放到redis中進行緩存,可以降低CPU、IO的負載。
        CPU一些衡量指標: 用户user%<10% 、wait%<5%、idle%<80%、IOWAIT<5%。
    
sar -p 也可以查看CPU使用情況
    
01:30:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:40:01 PM     all          0.56      0.00      0.17      1.73      0.00     97.55
01:50:01 PM     all          0.37      0.00      0.16      1.89      0.00     97.57
02:00:01 PM     all          1.02      0.00      0.18      1.29      0.00     97.52
02:10:01 PM     all          1.47      0.00      0.22      0.83      0.00     97.47
02:20:01 PM     all          2.13      0.00      0.26      0.56      0.00     97.04
02:30:01 PM     all          1.93      0.00      0.23      0.70      0.00     97.14
02:40:01 PM     all          1.75      0.00      0.17      0.83      0.00     97.25
02:50:01 PM     all          1.57      0.00      0.15      0.80      0.00     97.49
03:00:01 PM     all          1.55      0.00      0.14      0.76      0.00     97.55
03:10:01 PM     all          3.37      0.00      0.29      0.86      0.00     95.48
03:20:01 PM     all          2.96      0.00      0.26      0.82      0.00     95.96
Average:           all          2.17      0.00      0.30      0.42      0.00     97.12 

   %user是用戶CPU使用率,%system是系統CPU使用率。
   如果%user很高說明,用戶進程負載很高,可能是SQL語句的問題,可以在MySQL中用show full processlist\G來查看SQL語句執行情況,從而選擇語句進行explain查看,需要改寫的改寫,需要優化索引的優化索引。
   如果%system很高可能會導致中斷。IO比较差或者发生频繁SWAP还有网络IO很高,除了IDLE任何一列超过10说明很高,需要关注。

  內存:free -m即可監控。     
  主要關注cached、used,如果cached低,used高要注意了,可能是內存洩漏,就是沒有及時釋放使用完畢的內存。

    sar -r也可以查看內存使用情況:
    01:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01:40:01 PM  15608224 116495396     88.18    228912  10124336 107304284     63.12
    01:50:01 PM  15028680 117074940     88.62    230884  10681796 107303308     63.12
    02:00:01 PM  15007156 117096464     88.64    231896  10703256 107321572     63.13
    02:10:01 PM  14515268 117588352     89.01    232040  11143528 107349252     63.15
    02:20:01 PM  14505052 117598568     89.02    233420  11146696 107360896     63.16
    02:30:01 PM  14507368 117596252     89.02    234868  11139748 107366216     63.16
    02:40:01 PM  14487060 117616560     89.03    236304  11110168 107405800     63.18
    02:50:01 PM  14572496 117531124     88.97    237668  11050164 107371496     63.16
    03:00:01 PM  14587436 117516184     88.96    239220  11033556 107360344     63.16
    03:10:01 PM  15703372 116400248     88.11    236808   9932424 107357368     63.15
    03:20:01 PM  16501268 115602352     87.51    236868   9172400 107355456     63.15
    03:30:01 PM  16367920 115735700     87.61    239096   9285328 107386628     63.17
        Average:     17878881 114224739     86.47    179138   8503225 107470051    63.22
  查看全部
监控CPU是日常主要工作的一项,因为CPU利用率很高,有可能是服务器上可能有很多计算的SQL语句,也可能是索引没有建好或者没有建立索引导致。
        
         用top命令可以查出当前CPU使用情况。
         top - 14:29:42 up 454 days, 19:36, 33 users,  load average: 2.02, 1.70, 1.58
        Tasks: 1421 total,   1 running, 1419 sleeping,   1 stopped,   0 zombie
        Cpu(s):  1.2%us,  0.1%sy,  0.0%ni, 97.5%id,  1.1%wa,  0.0%hi,  0.0%si,  0.0%st
        Mem:  132103620k total, 117597200k used, 14506420k free,   234836k buffers
        Swap: 37887992k total,  1111756k used, 36776236k free, 11139408k cached

        load average:負載情況,如果說性能是服務器能夠跑多快,那麼,負載就是能夠跑多久。
        load average: 2.02, 1.70, 1.58 這個是1分鐘、5分鐘、15分鐘的負載情況。
        該數據是根據是每間隔5秒鐘計算一次,根據活躍進程數計算出來的,如果這個值除以CPU的數目超過5說明超負荷了。
        
        CPU使用率很高原因可能是因為索引,IO使用率很高也可能是索引問題,可以考慮把訪問頻繁的數據放到redis中進行緩存,可以降低CPU、IO的負載。
        CPU一些衡量指標: 用户user%<10% 、wait%<5%、idle%<80%、IOWAIT<5%。
    
sar -p 也可以查看CPU使用情況
    
01:30:01 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
01:40:01 PM     all          0.56      0.00      0.17      1.73      0.00     97.55
01:50:01 PM     all          0.37      0.00      0.16      1.89      0.00     97.57
02:00:01 PM     all          1.02      0.00      0.18      1.29      0.00     97.52
02:10:01 PM     all          1.47      0.00      0.22      0.83      0.00     97.47
02:20:01 PM     all          2.13      0.00      0.26      0.56      0.00     97.04
02:30:01 PM     all          1.93      0.00      0.23      0.70      0.00     97.14
02:40:01 PM     all          1.75      0.00      0.17      0.83      0.00     97.25
02:50:01 PM     all          1.57      0.00      0.15      0.80      0.00     97.49
03:00:01 PM     all          1.55      0.00      0.14      0.76      0.00     97.55
03:10:01 PM     all          3.37      0.00      0.29      0.86      0.00     95.48
03:20:01 PM     all          2.96      0.00      0.26      0.82      0.00     95.96
Average:           all          2.17      0.00      0.30      0.42      0.00     97.12 

   %user是用戶CPU使用率,%system是系統CPU使用率。
   如果%user很高說明,用戶進程負載很高,可能是SQL語句的問題,可以在MySQL中用show full processlist\G來查看SQL語句執行情況,從而選擇語句進行explain查看,需要改寫的改寫,需要優化索引的優化索引。
   如果%system很高可能會導致中斷。IO比较差或者发生频繁SWAP还有网络IO很高,除了IDLE任何一列超过10说明很高,需要关注。

  內存:free -m即可監控。     
  主要關注cached、used,如果cached低,used高要注意了,可能是內存洩漏,就是沒有及時釋放使用完畢的內存。

    sar -r也可以查看內存使用情況:
    01:30:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    01:40:01 PM  15608224 116495396     88.18    228912  10124336 107304284     63.12
    01:50:01 PM  15028680 117074940     88.62    230884  10681796 107303308     63.12
    02:00:01 PM  15007156 117096464     88.64    231896  10703256 107321572     63.13
    02:10:01 PM  14515268 117588352     89.01    232040  11143528 107349252     63.15
    02:20:01 PM  14505052 117598568     89.02    233420  11146696 107360896     63.16
    02:30:01 PM  14507368 117596252     89.02    234868  11139748 107366216     63.16
    02:40:01 PM  14487060 117616560     89.03    236304  11110168 107405800     63.18
    02:50:01 PM  14572496 117531124     88.97    237668  11050164 107371496     63.16
    03:00:01 PM  14587436 117516184     88.96    239220  11033556 107360344     63.16
    03:10:01 PM  15703372 116400248     88.11    236808   9932424 107357368     63.15
    03:20:01 PM  16501268 115602352     87.51    236868   9172400 107355456     63.15
    03:30:01 PM  16367920 115735700     87.61    239096   9285328 107386628     63.17
        Average:     17878881 114224739     86.47    179138   8503225 107470051    63.22
 
Linux操作系统,Linux运维