Watch 指令:周期性执行别的指令
命令解析
-n 代表时间间隔,单位秒
-d 后跟要监控的指令
常见用法
动态观测内存变化
动态观测存储的变化
Screen 指令:调试的利器
命令安装
yum install screen
常见用法
- 创建一个新的screen session
- 进入到一个新的screen session
- 退出一个screen session
- 关闭一个screen session
注意事项
该指令不能作为最终生产线的运行模式,因为打印的日志量是有限的,只能在调试模式使用。
Systemctl指令:生产线的标配
centos中自带的命令,用于启停服务,对应的日志命令为 journalctl。
常见使用
在 /lib/systemd/system/中定义好 xxx.service
- 启动xxx服务
- 查看xxx服务状态
- 关闭xxx服务
- 查看xxx服务的日志
注意事项
在docker中使用systemctl的时候需要注意,以普通的方式进入到docker中是无法使用systemctl指令的,需要添加参数 --privileged=true。这部分原理在介绍Docker的时候将会详细介绍。
监控机器的运行状态
内存
free 指令
硬盘
df 指令
磁盘这里需要多linux文件系统有一定了解,才能看懂。不过看个大概还是没问题。
进程
ps 指令
其中红框那一列是进程号。
进程树
pstree 指令
17443是上述进程号
网络情况
netstat 指令
9000是端口号
红框区域是进程号,绿框区域是进程。
top:查看整体运行情况
火焰图:监控进程的状态,性能调优
利用动态追踪技术,使用systemtap,参考资料:动态追踪工具——火焰图
安装
找到自己的版本详情,注意由于安装的工具一定要与内核版本一致,所以这里不能找错了。
前往官方网站寻找对应版本的内核debuginfo工具 CentOS Debuginfo Mirror 分别以kernel-debuginfo和kernel-debuginfo-common为关键字搜索寻找
下载好之后,传输到服务器上之后,安装,执行命令
然后下载对应的kernel-devel版本,这是内核开发库。一般来说,你的操作系统里面都有。没有安装就行,版本需要和之前的内核版本对应上。
然后,安装systemtap工具即可。
然后下载openresty提供的systemtap工具,openresty-systemtap-toolkit 和 火焰图生产工具 brendangregg / FlameGraph 到本地。
获取你想分析的进程Id,我这里使用阿里云服务器的云盾服务来分析。
进程号是18982,来到openresty-systemtap-toolkit的目录下,执行命令:
然后进入到svg目录,确保生成的b.bt大小不为0。执行下面的命令生成最终的svg图片
将b.svg下载下来,最终的效果如下:
关于火焰图怎么使用,怎么做性能调优,请参考博文:动态追踪技术漫谈
最后,我和朋友建了一个一同学习测开技企鹅群(闲聊,水群,广告勿扰):826471103,对博客内容开发感兴趣的朋友可以加群,避免错过后续内容。