近期在对mysql例行检查时候,发现有台服务器竟然把千兆内网跑慢了。相当异常,但通过show processlist并为发现异常的进程在运行中。仔细看了后,发现是个sleep,若kill掉后,流量马上就下降了,但它究竟在做什么呢?
为了进一步定位出问题来,想到之前用过的脚本tcpdump分析下是什么内容一直在占用带宽。
#!/bin/bash#this script used montor mysql network traffic.echo sqltcpdump -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命令,定位到相应的语句,发给研发人员,去判断程序逻辑是存在问题。
最终定位出,是程序逻辑问题所致。
原文地址:通过tcpdump抓取mysql语句分析故障, 感谢原作者分享。 你曾经说,等我们老的时候,