线上成绩排查,这些命令你一定用得到
作者头像
  • Coco智能
  • 2019-11-13 08:25:17 4

线上性能排查,以下场景你可能遇到过:

一、了解机器连接数情况

问题:1.2.3.4的sshd服务监听端口是22,如何统计该sshd服务的各种连接状态(如TIMEWAIT/CLOSEWAIT/ESTABLISHED)的连接数量?

常用方法: - 使用netstat命令配合grep和awk进行统计: sh netstat -n | grep 1.2.3.4:22 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' - 或者使用netstat命令结合特定条件筛选: sh netstat -lnpta | grep ssh | egrep "TIME_WAIT | CLOSE_WAIT | ESTABLISHED" 说明:netstat是一个常用的网络连接检查工具,与grep和awk结合使用效果更佳。如果是在阿里云环境中,还可以使用更便捷的方法。

二、从备份的日志中查询数据

问题:从已经备份的suyun.2019-06-26.log.bz2日志文件中,找出包含关键字1.2.3.4的日志条目总数。

常用方法: - 使用bzcat命令结合grep和wc进行统计: sh bzcat suyun.2019-06-26.log.bz2 | grep '1.2.3.4' | wc -l - 或者使用bzgrep命令直接处理压缩文件: sh bzgrep '1.2.3.4' suyun.2019-06-26.log.bz2 | wc -l - 还可以通过less命令逐行查找: sh less suyun.2019-06-26.log.bz2 | grep '1.2.3.4' | wc -l 说明:线上日志通常以压缩格式存储,使用bzcat和bzgrep工具可以高效地进行解压和搜索,节省时间和资源。

三、备份服务的技巧

问题:将/opt/web/suyun_web目录下的内容打包备份到/opt/backup目录,排除掉目录中的logs子目录。

常用方法: sh tar -zcvf /opt/backup/shenjian.tar.gz -exclude /opt/web/suyun_web/logs /opt/web/suyun_web 说明:这个命令在项目需要打包迁移时经常使用,需要排除日志目录。掌握exclude参数非常重要。

四、查询线程数

问题:查询服务器上运行服务的总线程数,当线程数超过警戒阈值时,能够快速查出相关进程及其线程信息。

参考方法: - 使用ps命令结合-L选项统计所有线程: sh ps -eLf | wc -l - 或者使用pstree命令结合-p选项统计所有线程: sh pstree -p | wc -l

五、磁盘报警,清空最大文件

问题:找出服务器上由某个正在运行的Tomcat产生的大量异常日志文件,清理该文件以释放空间。假设该文件包含“log”关键字,并且大小超过1GB。

常用方法:

第一步:找到该文件 - 使用find命令结合-ls和-sort选项列出所有日志文件并排序: sh find / -type f -name "*log*" | xargs ls -lSh | more - 或者使用du命令结合-sort选项查找大文件: sh du -a / | sort -rn | grep log | more - 另一种方法是直接查找大于1GB的文件: sh find / -name '*log*' -size +1000M -exec du -h {} ;

第二步:清空文件 假设找到的文件名为a.log。 - 正确的方法是使用echo命令清空文件内容: sh echo "" > a.log 这样文件占用的空间会立即释放。 - 注意不要使用rm命令删除文件,因为即使文件被删除,Tomcat服务仍会继续占用空间,直到重启服务。

六、显示文件,过滤注释

问题:显示server.conf文件内容,但屏蔽掉以#开头的注释行。

常用方法: - 使用sed命令过滤注释行: sh sed -n '/^[#]/!p' server.conf - 或者使用sed命令直接删除注释行: sh sed -e '/^#/d' server.conf - 还可以使用grep命令排除注释行: sh grep -v "^#" server.conf

七、磁盘IO异常排查

问题:如何排查磁盘IO异常,例如写入慢或当前利用率较高?请找出导致磁盘IO异常的进程ID。

常用方法:

第一步: 使用iotop命令查看当前正在进行磁盘写入操作的所有进程ID: sh iotop -o

第二步: 如果此时发现磁盘写入操作很低,几乎没有大的写入行为,则需要进一步排查磁盘本身的问题。可以查看系统日志: - 使用dmesg命令查看磁盘异常报错: sh dmesg - 或者查看/var/log/message文件: sh cat /var/log/message - 同时可以在写入慢的磁盘上创建一个空文件,验证是否由于磁盘缺陷导致无法写入。

    本文来源:图灵汇
责任编辑: : Coco智能
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
排查命令这些得到成绩一定
    下一篇