標籤:流量攻擊網站無法載入頁面
2016年11月21日 上午
大周一的早上被手機鬧鈴給振醒,我這個人有個習慣每次起床必定看一眼手機,不管是早上還是半夜只要醒來總要看看手機郵箱是否收到警示郵件。(我只是個苦逼的小營運~)
起床拉開窗帘看著窗外06年的第一場雪,美好的一天開始了~~
剛到公司屁股剛坐熱,聽到有人說咱們網站咋回事?訪問的時候咋看不到頁面呐?!
好吧~ 我知道,來活了!開幹!
問題描述:在瀏覽器中輸入公司網址發覺串連了半天還沒訪問到頁面,隨著時間的加長網站只是載入了一些靜態資源。清除緩衝在此訪問,問題依舊。
問題分析:因為之前出現過流量攻擊的情況,我當時立刻開啟監控查看網站入口流量情況發覺果然流量爆滿並且超過了很多。根據日誌發覺單個ip訪問同一個頁面1s中出現超過20次,懷疑為流量攻擊。我試著把佔用流量最多的兩個外網地址給 iptables -I INPUT -s *.*.*.* -j DROP。流量很快下來了很多。
但是網站訪問依然慢。這特麼是為啥呢?
這時想到也許和mysql有關,畢竟動態網站是要讀取mysql的如果mysql串連數過多可是會拖慢網站的!
首先查看mysql進程
#mysqladmin processlist -uroot -p |wc -l
5591
之後進入mysql查看最大串連數是多少?
mysql> show variables like ‘%max_connections%‘;
5000
丫丫個呸的~ 竟然是5000!
原來問題出在這裡!!!
之後查看當前串連數
mysql> show status like ‘Threads%‘;
發覺果然超過了~
解決辦法:show processlist 查看mysql進程,發覺有很多sleep進程!殺掉!!
(為了先解決問題,可以先重啟一下mysql之後修改最大串連數)
附帶批量kill sleep mysql進程指令碼
cat mysql_sleep.sh
#!/bin/sh
user=root
passwd=12345678
host=192.168.1.200
while :
do
n=`mysqladmin processlist -u$user -p$passwd -h$host | grep -i sleep | wc -l`
date=`date +%Y%m%d[%H:%M:%S]`
echo $n
if [ "$n" -gt 20 ]
then
for i in `mysqladmin processlist -u$user -p$passwd -h$host | grep -i sleep | awk ‘{print $2}‘`
do
mysqladmin -u$user -p$passwd -h$host kill $i
done
echo "sleep is too many I killed it " >> /tmp/sleep.log
echo "$date : $n" >> /tmp/sleep.log
fi
sleep 1
done
本文出自 “蝸牛的嘲諷” 部落格,轉載請與作者聯絡!
網站為什麼打不開?訪問緩慢?