最近網(wǎng)站總是突然之間,非常卡頓,數(shù)據(jù)都加載不出來了,十分的離奇。可是最近也沒有改代碼也沒什么功能變動(dòng),訪問量也沒突然特別多。上了服務(wù)器之后也不知道發(fā)生了什么,環(huán)境也是正常的運(yùn)行,而且卡頓的情況過了一會(huì)后就好了,一會(huì)卡一會(huì)就好了的樣子。
在持續(xù)觀察的過程中發(fā)現(xiàn),每次卡頓的時(shí)候服務(wù)器的讀寫就很大,而且CPU的占用也會(huì)突然的跑滿,查看占用發(fā)現(xiàn)是MYSQL占用了所有的資源,這個(gè)時(shí)候就稍微有點(diǎn)眉頭了??赡苁墙o別的服務(wù)商提供的視圖,被他們大量抓取資源的時(shí)候服務(wù)器就特別的卡。
知道了原因就好說了,查一查哪一個(gè)用戶占用的比較多,直接給他停了
在MySQL中,要查詢哪個(gè)賬號(hào)請求多且占用資源多,我們可以從幾個(gè)方面來考慮:連接次數(shù)、執(zhí)行查詢的次數(shù)、鎖等待時(shí)間、IO操作等。
以下是一些常用的查詢:
1. **按連接數(shù)排序**:查看哪個(gè)用戶建立的連接多。
2. **按執(zhí)行語句總數(shù)排序**:包括各種類型的語句(查詢、更新等)。
3. **按鎖等待時(shí)間排序**:反映了哪些用戶的操作可能導(dǎo)致了較多的鎖競爭。
4. **按IO操作排序**:包括讀寫的數(shù)據(jù)量。
1. 按執(zhí)行次數(shù)排序(請求頻率高)
2. 按資源消耗排序(CPU/IO高)
這里建議用第二個(gè)方法,可以直觀查看他們查詢數(shù)據(jù)的行數(shù)和cpu占用時(shí)間,根據(jù)哪個(gè)用戶用量比較高直接做限制就可以了