大量壓測時mongo出現問題
-
使用PHP連Mongodb,在大量壓測時連線很容易就會中斷,write concern設定的參數使用 w=majority、wtimeout=1s、journal=false,
觀察連線數量大時會出現 "waiting for replication timed out",請問該怎麼處理?
-
先確認一下環境設定問題。
確認是否有使用連接池。
建立連接池後觀察log。確認程式使用連接池連接。應該能解決問題
如還有問題,可以分析mongod log看是否有以下幾個問題
1.執行時間過長ex:100ms。
2.對同一筆資料短時間內重複讀寫。
-
@yea 可以將wtimeout參數拿掉或是配置大一些,否則因為網路因素或是服務器同步效率不好時會超過1秒導致回覆失敗,建議先不設置timeout看看是否正常
-
你可以看看mongoDB儲存的檔案格式是不是ext4的檔案格式,如果是ext4改成XFS試試,
另外關閉文件系統/分區的atime選擇,並在對應的分區選項改為noatime
-
試試將mongodb在系統讀取檔案的儲存的設定(readahead)改為0,減少mongodb的IO讀取
-
查過相關log。如果兩種情況都有請問該如何處理?
-
好的,我再試試看,感謝回覆~
-
建議可以增加更多的mongos應該可以解決執行時間超過100ms的問題
-
@yea 會發生timeout 其實有兩種可能性
一種是集群無法負荷 一種是網路問題 可能兩方面都要查查看
這邊提供驗證的方式讓你驗證看看
將Mongodb架在發送連線的機器
如果一樣出現timeout 表示是集群無法負荷;如果沒有出現timeout 則表示為網路問題
-
也或許可以從架構面調整,例如登入時會頻繁存取session,很容易造成效能的問題,
可以考慮改用別的 nosql 處理,例如: redis、memorycache