1. 對於linux系統來說,free mem很少並不一定代表記憶體不足,成為瓶頸。實際上這是由於linux的記憶體管理機制造成的,linux會把free的記憶體(完全沒使用過的記憶體)盡可能的利用起來,作為buffers/cached(當有程序申請記憶體時,如果沒free,會把buffers/cached分配給程序),以提高系統的效能,尤其是在有大量i/o的情況下,增大buffers/cached會很大地提高i/o,可以提高多達20%的i/o效能,因此實際是linux的這一特性造成free mem幾乎沒有。當伺服器存在大量i/o時,比較容易出現free mem幾乎沒有這樣的情況。used-buffers-cached得到的結果才是應用程式用掉的記憶體,如果這個數字已經接近或超過總的記憶體數,那麼記憶體成為瓶頸。如下:
[root@localhost ~]# free
total used free shared buffers cached
mem: 16418140 16352412 65728 0 180048 13668900
-/+ buffers/cache: 2503464 13914676
swap: 4192924 208 4192716
第二行(-/+ buffers/cache)的used是扣除了buffers/cache後的used記憶體,這才是真正的被應用程式使用掉的記憶體(包括核心級程序和使用者級程序)。也可以通過swap來判斷記憶體是否是瓶頸,如果swap大量used,並且頻繁的發生swap in和swap out,那麼記憶體一定是瓶頸;有時用free會看到少量的swap used,這並不影響效能,記憶體不是瓶頸。
ps:buffers和cached的區別。兩者都是快取,都是為了提高i/o的效能,不同的是buffers是塊裝置的快取,而cached是字元裝置的快取,簡單地說,buffers用來儲存目錄下面有什麼內容、什麼許可權等等,cached則儲存檔案的內容,例如,ls一下,可以發現buffers有明顯增長(buffers其實一直在緩慢增長),而開啟乙個檔案後,可以發現cached明顯增長。
2. 現象:還沒有開始效能測試,伺服器的load達到1以上,cpu 使用 user接近0sys有些情況下也接近0,有些情況下會達到10%以上,用vmstat檢視,r(執行佇列中的等待程序數)=0,b(等待i/o的程序數)>0
原因:產生這種現象的原因很多,比如,作業系統中存在狀態為d(uninterruptible sleep)或狀態為z(zombie)的程序,這兩種程序會把系統load弄高(因為這兩種狀態的程序會滯留在cpu 執行佇列中);或者系統對同乙個目錄mount了多次,會導致load公升高,sys cpu>10%;一般都是跟i/o相關。
判斷及解決方法:
top或者ps afux一下,看看程序的狀態;
df一下看看是否有重複的mount;
vmstat檢視一下;
可以根據不同的情況採用不同的辦法來解決,由於是測試環境,最簡單有效的辦法就是reboot。不過有時reboot前也要做一些工作,比如已經mount了nfs服務端上的乙個目錄,並寫入了fstab中,而nfs服務端關閉了,那麼需要把fstab中的相應內容刪除後再reboot,否則reboot後仍然會自動mount。
架構效能指標
1 mysql 乙個資料表的資料過多,對更新和查詢效能都有影響。對於不再使用的資料要及時備份清走。一般資料庫的容量剩餘不到60 就要考慮分庫分表了。一般一台物理機寫入能力也不能高於qps1500。所以對於主從延時不是很敏感的業務場景,一定要做好讀寫分離。雖然做了讀寫分離,如果讀和寫的 在乙個事務裡,...
1 效能指標
速率 定義 速率即資料率或稱資料傳輸率或位元率,是表示連線在計算機網路上的主機在數字通道上傳輸資料位數的速率 就是一秒能夠傳輸多少位元 0或1 頻寬定義 計算機網路中,頻寬用來表示通訊線路傳送資料的能力,通常是指單位時間內從網路的某一點到另一點所能通過的 最高資料率 單位是 位元每秒即b s kb ...
mysql 效能指標
qps每秒處理的查詢數 tps每秒處理的事務數 iops每秒磁碟進行的i o操作次數 一 tps transactions per second 每秒傳輸的事物處理個數 即伺服器每秒處理的事務數。tps包括一條訊息入和一條訊息出,加上一次使用者資料庫訪問。業務tps caps 每個呼叫平均tps t...