版上各位先進好:
小弟我目前在設計多執行緒的伺服器上遇到效能瓶頸,
底層的Socket Server是用Boost::Asio,
單純用single io_service & multiple thread的架構處理效能還不錯,
但目前系統上都會需要封包指令是要將某個index要對應到某個session,
所以只好在accept時把index跟session存入到map中,這時就需要使用lock去做保護,
因為加了這個lock導致在一秒內如果是上萬的連線數要aceept延遲就會提高,
後面開始run的過程中因為我使用的是shared_mutex,
所以對map純讀(shared_lock)感覺效能還可以。
如果是單純讀寫分離的Queue還可以用boost::lockfree去處理,
但遇到真的架構上就需要有一個map,這種情況就不知道怎麼優化它,
想問版上的各位先進有什麼設計方向可供我參考,謝謝。