大量壓測時mongo出現問題


  • 註冊用戶

    使用PHP連Mongodb,在大量壓測時連線很容易就會中斷,write concern設定的參數使用 w=majority、wtimeout=1s、journal=false,
    觀察連線數量大時會出現 "waiting for replication timed out",請問該怎麼處理?


  • 註冊用戶

    先確認一下環境設定問題。

    確認是否有使用連接池。

    建立連接池後觀察log。確認程式使用連接池連接。應該能解決問題

    如還有問題,可以分析mongod log看是否有以下幾個問題

    1.執行時間過長ex:100ms。

    2.對同一筆資料短時間內重複讀寫。


  • Lv 1

    @yea 可以將wtimeout參數拿掉或是配置大一些,否則因為網路因素或是服務器同步效率不好時會超過1秒導致回覆失敗,建議先不設置timeout看看是否正常


  • Lv 1

    你可以看看mongoDB儲存的檔案格式是不是ext4的檔案格式,如果是ext4改成XFS試試,
    另外關閉文件系統/分區的atime選擇,並在對應的分區選項改為noatime


  • 註冊用戶

    試試將mongodb在系統讀取檔案的儲存的設定(readahead)改為0,減少mongodb的IO讀取


  • 註冊用戶

    @neo

    查過相關log。如果兩種情況都有請問該如何處理?


  • 註冊用戶

    @Jasonchang

    好的,我再試試看,感謝回覆~


  • 註冊用戶

    @yea

    建議可以增加更多的mongos應該可以解決執行時間超過100ms的問題


  • Lv 1

    @yea 會發生timeout 其實有兩種可能性

    一種是集群無法負荷 一種是網路問題   可能兩方面都要查查看 

    這邊提供驗證的方式讓你驗證看看

    將Mongodb架在發送連線的機器 

    如果一樣出現timeout 表示是集群無法負荷;如果沒有出現timeout 則表示為網路問題


  • Lv 1

    @yea 

    也或許可以從架構面調整,例如登入時會頻繁存取session,很容易造成效能的問題,
    可以考慮改用別的 nosql 處理,例如: redis、memorycache


登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待