欢迎访问我的博客,你的支持,是我最大的动力!

运维常用工具

Linux 小马奔腾 405℃ 评论
目录:
[显示]

资源查看

 

进程
htop 进程实时监控
# 安装 epel源
yum install htop
操作:
箭头 滚动列表;空格 标记进程;c 标记进程及子进程;U 取消所有标记;k kill进程/标记的进程;t 树型显示;p 切换路径显示;[] 调整优先级
u 显示某用户的进程;H 显示线程;e 显示进程环境变量;K 显示内核线程;i 设置IO优先级;l 用lsof列出文件;+- 折叠树;s 调用strace系统调用
<> 切换排序;PMT 按CPU% MEM% TIME排序;I 逆序;CS 设置

 

 

 

内存
## 假如我们需要关注的进程id为12788 关注点为物理内存占用
1、通过进程 status
cat /proc/12788/status | grep VmRSS    # VmRSS表示物理内存
2、通过 pmap
pmap -x 12788 | grep total   # 统计结果的第二项RSS
3、通过 smaps
cat /proc/12788/smaps | grep '^Rss:' | awk '{sum+=$2} END{print sum}'  # 这是计算的结果
4、通过 ps
ps -e -o 'pid,pcpu,rsz,vsz,stime,user,comm,args,uid' | awk '$1 ~ /12788/'   # rsz列即为物理内存
ps -e -o 'pid,pcpu,rsz,vsz,stime,user,comm,args,uid' | sort -k3nr  # 按内存占用降序
5、通过 top
top -p 12788  # RES列为物理内存占用

 

CPU
show-busy-java-threads

快速排查java的CPU性能问题,自动查出运行的java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用

部署:
curl -o show-busy-java-threads.sh https://raw.githubusercontent.com/oldratlee/useful-scripts/master/show-busy-java-threads
运行:
bash show-busy-java-threads.sh #查找系统所有java程序
bash show-busy-java-threads.sh -p PID #仅查找指定PID的java程序
bash show-busy-java-threads.sh -h # 查看帮助

 

网络
iptraf-ng 网络分析工具
# 安装 base源
yum install iptraf
图形化界面,面对的主要是是数据包,偏向于三层、二层网络深层次排查
运行 iptraf-ng
在SecureCRT中显示有问题,可使用Tmux
NetHogs 查看进程的网络传输情况
netthogs可以显示每个程序的网络传输情况
安装nethogs工具 [epel源]
yum install https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/Packages/n/nethogs-0.8.5-1.el7.x86_64.rpm
依赖libpcap
语法:
nethogs [-V] [-h] [-b] [-d seconds] [-v mode] [-c count] [-t] [-p] [-s] [device [device [device ...]]]
-d num,更新频率,默认1秒
运行中的操作:
q,退出;s,按发送流量排序;r,按接收流量排序;m,在KB、B、MB、KB/s之间切换
iftop 网络流量监控
# 安装 epel源
下载:http://www.ex-parrot.com/~pdw/iftop/
yum install iftop
操作
h 帮助;n 禁用DNS解析;t 流量方向;p 显示端口;N 端口名称解析;P 暂停;jk 上行滚动
rates 表示过去2s 10s 40s 的平均流量

tcp-connection-state-counter

统计各个TCP连接状态的个数,方便排查系统连接负荷问题

部署:
curl -o tcp-connection-state-counter.sh https://raw.githubusercontent.com/oldratlee/useful-scripts/master/tcp-connection-state-counter
运行:
bash tcp-connection-state-counter.sh
TIME_WAIT 7016
ESTABLISHED 1095
LISTEN 44
CLOSE_WAIT 13
LAST_ACK 1
FIN_WAIT1 1

 

 

磁盘
iotop 实时磁盘IO查看
# 安装 base源
yum install iotop
按键:左右 排序列;r 反转排序;o 只显示有IO的进程或线程;p 只显示进程不显示线程;a 累积;i 改变IO优先级;q 退出;任意键 强制刷新
iotop -p PID  #只查看指定PID的进程的IO情况
iotop -u USER  #只查看指定用户的进程/线程IO情况

agedu 磁盘空间使用
# 安装 epel源
yum install agedu
分析磁盘使用情况,支持以web页面方式查看
1、扫描指定目录
agedu -s /    # 扫描所有目录,生成agedu.dat文件
2、web方式展现
agedu -w --address 192.168.1.77:8089 --auth none
-w,--web 启动web服务器
--auth none 不需要验证
对于生产环境,可以下载agedu.dat在本地启动web服务查看;或通过ssh临时建立端口转发,进行中转,如
#ssh -p 22 -C -f -N -g -L 80:192.168.1.77:8089 root@192.168.1.77
#将发往本机192.168.1.50(本地服务器) 80端口访问转发到192.168.1.77(生产服务器)的8089端口,此时访问http://192.168.1.50 即可

综合
nmon 系统资源监控
# 安装 epel源
yum install nmon
在SecureCRT中显示有问题,可使用Tmux
操作:
c CPU;C CPU大图;-+ 刷新频率;U 分核心显示;m 内存;V 虚拟内存;j 文件系统;d 磁盘;n 网络;. 仅显示繁忙的磁盘/CPU

 

 

性能测试

 

磁盘
IOZone 磁盘读取性能测试
下载:http://www.iozone.org/src/current/
# 安装 有依赖
yum install http://www.iozone.org/src/current/iozone-3-487.i386.rpm
# 用法
/opt/iozone/bin/iozone -h  # 查看帮助  参数非常多
./iozone -a -n 512 -g 10m -i 0-i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls
参数:
-a 使用全自动模式
-n 最小文件大小,默认单位Kb
-g 最大文件大小,默认单位Kb
-i 要运行的测试
-f 指定测试文件的名字,测试完成后会自动删除
-R 产生Excel到标准输出
-b 保存输出到指定文件

 

其他工具

tmux 终端多路利用器
# 安装 epel源 1.8
yum install tmux
# yum install https://copr-be.cloud.fedoraproject.org/results/hnakamur/tmux/epel-7-x86_64/00517591-tmux/tmux-2.3-2.el7.centos.x86_64.rpm
tmux是终端多路复用器,可创建/访问多个终端,是screen的替代品
命令格式:
tmux [-28lCquvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]
选项:
-2,强制使用256色;-8 支持88色
操作方法:
ctrl+b,激活控制台,此时其他按键生效,快捷键前缀
窗格% 竖直窗格;水平窗格;方向键 在窗格移动;q 显示编号;o 切换窗格;{} 交换窗格位置;t 在当前窗格显示时间;i 显示当前窗格信息
z 放大当前窗格;[ 滚屏 q 退出滚屏;
窗口c 新窗口; 重命名当前窗口;w 列出窗口;n 下一窗口;p 下一窗口;l 进入之前操作的窗口;0~9 进入指定窗口;. 修改当前窗口编号
f 根据显示的内容搜索并切换窗口;& 关闭当前窗口
会话s 切换会话;d 分离会话;D 分离指定会话;$ 重命名会话;
命令模式 进入命令模式;new -s name 新会话;
除非显式关闭会话,否则重启前,会话都不会消失
登到某个会话后,ctrl-b+d 退出该会话,但会话不会关闭;ctrl+d 退出会话同时关闭该会话
常用命令
tmux new -s name  创建会话name;不加参数则创建默认名称的会话
tmux ls  显示会话列表
tmux attch  进入最近的会话;tmux a 简写;tmux a -t name 连接指定的会话
tmux rename -t s1 s2 重命名会话s1为s2
tmux kill-session 关闭上次打开的会话
tmux kill-session -t s1 关闭指定的会话
tmux kill-server 关闭所有会话
tmux list-key 列出所有快捷键
tmux list-command 列出所有命令

 

 

 

 

 

转载请注明:轻风博客 » 运维常用工具

喜欢 (1)or分享 (0)