近期在对mysql例行检查时候,发现有台服务器竟然把千兆内网跑慢了。相当异常,但通过show processlist并为发现异常的进程在运行中。
仔细看了后,发现是个sleep,若kill掉后,流量马上就下降了,但它究竟在做什么呢?
为了进一步定位出问题来,想到之前用过的脚本tcpdump分析下是什么内容一直在占用带宽。
代码如下 | 复制代码 |
#!/bin/bash #this script used montor mysql network traffic.echo sql tcpdump -i eth1 -s 0 -l -w - dst port 3306 | strings | perl -e ' while(<>) { chomp; next if /^[^ ]+[ ]*$/; if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL)/i) { if (defined $q) { print "$q\n"; } $q=$_; } else { $_ =~ s/^[ \t]+//; $q.=" $_"; } }' |
运行后,找到了令人振奋的信息
程序一直在跑这个语句,然后通过相应的find命令,定位到相应的语句,发给研发人员,去判断程序逻辑是存在问题。
时间: 2024-10-13 10:23:23