mysql中kill掉所有锁表的进程爬虫抓取数据分析
2011-01-10 14:56
716 查看
快过年了最近club服务器 老有刷数据的 封了N 多IP 而且一刷就锁表,老这样不是办法的想办法解决啊
mysql>show processlist;
出来哗啦啦好几屏幕的, 没有一千也有几百条, 查询语句把表锁住了, 赶紧找出第一个Locked的thread_id, 在mysql的shell里面执行.
mysql>kill thread_id;
kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下.
#!/bin/bash
mysql -u root -p mima -e "show processlist" | grep -i "Locked" >> locked_log.txt
for line in `cat locked_log.txt | awk '{print $1}'`
do
echo "kill $line;" >> kill_thread_id.sql
done
现在kill_thread_id.sql的内容像这个样子
kill 66402982;
kill 66402983;
kill 66402986;
kill 66402991;
.....
好了, 我们在mysql的shell中执行, 就可以把所有锁表的进程杀死了.
mysql>source kill_thread_id.sql
当然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'`
do
mysqladmin kill ${id}
done
#########################################################################
至于怎么分析数据抓取的呢,首先你要开启 apache日志轮询。。
[root@c3 ~]# cat /home/houzc/shell/findIP2w.sh
#!/bin/sh
tail -10000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |awk '{print $1} '| awk -F. '{print $1"."$2"."$3}'|sort|uniq -c|sort -rn|more
执行完脚本会调取倒数10000行中访问次数3位最高的IP排序出来来。
tail -10000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |grep 121.13.162 |more
分析日志就可以了。
如果直接调取4位
tail -20000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |awk '{print $1} '|sort|uniq -cd|sort -rn|more
tail -20000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |grep IP地址 |more
查看某一时间段的IP访问总量
# cat access_log|awk '(/\[04\/Aug\/2009/) {print}'|awk -F: '$2<2 {print}'| awk -F. '{print $1"."$2"."$3}' | sort | uniq -c| sort -rn | more
//查看[04/Aug/2009 开头的且 $2(第二列为小时)小于2点的 访问过的IP总量排序
查看8:00到8:15之间的访问总量
# cat /www/logs/access/club_20100120_access.log |awk '{print $0}'|awk -F: '$2~/8$/ && $3<15 {print $0}'| awk -F. '{print $1"."$2"."$3}' | sort | uniq -c|sort -rn | more
查看并发状态
# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
这条语句返回结果如下
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
mysql>show processlist;
出来哗啦啦好几屏幕的, 没有一千也有几百条, 查询语句把表锁住了, 赶紧找出第一个Locked的thread_id, 在mysql的shell里面执行.
mysql>kill thread_id;
kill掉第一个锁表的进程, 依然没有改善. 既然不改善, 咱们就想办法将所有锁表的进程kill掉吧, 简单的脚本如下.
#!/bin/bash
mysql -u root -p mima -e "show processlist" | grep -i "Locked" >> locked_log.txt
for line in `cat locked_log.txt | awk '{print $1}'`
do
echo "kill $line;" >> kill_thread_id.sql
done
现在kill_thread_id.sql的内容像这个样子
kill 66402982;
kill 66402983;
kill 66402986;
kill 66402991;
.....
好了, 我们在mysql的shell中执行, 就可以把所有锁表的进程杀死了.
mysql>source kill_thread_id.sql
当然了, 也可以一行搞定
for id in `mysqladmin processlist | grep -i locked | awk '{print $1}'`
do
mysqladmin kill ${id}
done
#########################################################################
至于怎么分析数据抓取的呢,首先你要开启 apache日志轮询。。
[root@c3 ~]# cat /home/houzc/shell/findIP2w.sh
#!/bin/sh
tail -10000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |awk '{print $1} '| awk -F. '{print $1"."$2"."$3}'|sort|uniq -c|sort -rn|more
执行完脚本会调取倒数10000行中访问次数3位最高的IP排序出来来。
405 220.181.108 379 203.208.60 272 123.150.182 248 123.150.183 185 61.135.186 152 122.224.48 140 180.149.133 121 61.155.201 94 219.232.243 87 157.55.116 82 123.125.71 81 124.115.0 71 58.211.14 69 220.181.32 59 110.75.172 54 110.75.171 53 173.192.143 41 222.81.59 40 173.83.247 38 116.228.168 35 113.113.231 35 110.75.176 34 220.181.125 32 222.86.145 30 221.11.39 More-- |
分析日志就可以了。
如果直接调取4位
tail -20000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |awk '{print $1} '|sort|uniq -cd|sort -rn|more
tail -20000 /www/logs/access/66_club_`date +%Y%m%d`_access.log |grep IP地址 |more
查看某一时间段的IP访问总量
# cat access_log|awk '(/\[04\/Aug\/2009/) {print}'|awk -F: '$2<2 {print}'| awk -F. '{print $1"."$2"."$3}' | sort | uniq -c| sort -rn | more
//查看[04/Aug/2009 开头的且 $2(第二列为小时)小于2点的 访问过的IP总量排序
查看8:00到8:15之间的访问总量
# cat /www/logs/access/club_20100120_access.log |awk '{print $0}'|awk -F: '$2~/8$/ && $3<15 {print $0}'| awk -F. '{print $1"."$2"."$3}' | sort | uniq -c|sort -rn | more
查看并发状态
# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
这条语句返回结果如下
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
相关文章推荐
- [python和大数据-1]利用爬虫登录知乎进行BFS搜索抓取用户信息本地mysql分析【PART1】
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- python&php数据抓取、爬虫分析与中介,有网址案例
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- mysql中kill掉所有锁表的进程
- Kill 所有MySQL进程
- CSDN爬虫(四)——博客专家(所有)爬取+数据分析
- mysql中kill掉所有锁表的进程
- 爬虫抓取糯米网上所有商家数据
- MySQL中kill所有慢查询进程和锁表进程
- mysql中kill掉所有锁表的进程
- MySQL中kill掉所有表的进程
- python网络爬虫抓取动态网页并将数据存入数据库MySQL
- mysql中kill掉所有锁表的进程
- Kill 所有MySQL进程