如題, 一台WEB搭配一台MySQL,各有兩片網卡(eth0外、eth1內), mysql 跑內網查詢.
今天下午忽然發現, eth1流量比 eth0 大很多, 幾乎到頂 (請參考下圖).
total: 27330.69 KB/s 107724.00 KB/s 135054.68 KB/s
web 的也是一樣怪, 對外服務不到500KB (eth0), 而對內串接 mysql 的也是到頂, 只有停掉
mysql 服務才能降下來.
我的 mysql 版本是 5.1.60 source 安裝版, 請問有救嗎??
我想你的 mysql 被你自己的 web 站攻擊了。
SQL 指令寫得不好,就有這種情形發生。明明沒什麼人在用 Web AP,資料庫卻飆到最高點。
在 mysql 主機裡下個指令:mysqladmin -p processlist 會列出當下 mysql 的連線。注意其中兩欄 Command、Time 就可以知道哪個指令在耗 mysql 的時間。
在 mysql 的設定檔 my.cnf 裡加上下列三行,打開 slow query 的記錄:
slow_query_log=1
long_query_time = 5
slow_query_log_file=/tmp/slow_queries.log
重跑 mysql 之後,若再遇到流量飆高,就下指令看看什麼 SQL 在耗流量吧。比如下
mysqldumpslow -s r -t 10 /tmp/slow_queries.log
就表示列出查詢資料量最多的前 10 名。更多參數請參考官方網:
http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html
好吧, 您還是一哥 ^_^
昨天找到半夜, 終於發現是RD同事把MySQL語法設錯導致CPU Loading 飆高.
管系統的總是會先懷疑東懷疑西, 沒想到是內賊害的 :p
把有問題的程式修正, CPU Loading 馬上恢復正常, Anyway, 還是感謝 Wiseguy 大大提供寶貴的建議.
可以跟您要 Email 或 GoogleTalk 即時通嗎??
我的是 afgnsu@gmail.com ^_^
直接由 firewall 裡去限定只允許 MySQL 連線的 IP 吧, 這是最快也最省事的方法.
可以先看一下mysql.log,不然就限制一下mysql可以傳檔案的大小,不然就裝一下 ntop,看看是誰對你作DDOS攻擊.