搜尋

首頁  >  問答  >  主體

mongodb的線程池設定不起作用

最近遇到線程池的問題,預設mongodb為每個連接(即new 出的一個連接對象)分配了一個線程池,裡面最多有10個線程,網上說可以透過MongoOpection的connectionPerHost參數來調整線程池的大小,但是實際上無論我怎麼修改這個參數的值線程池的大小都是10,請問這個是為什麼,有什麼地方也要修改?

另外,對於一個網頁的應用,是客戶端每次點擊介面產生一個連接(new一個連接的物件)的設計好,還是在程式開始的時候new一個連接,然後分配給它較大的線程池,每次客戶連線就從線程池裡面取一個的方式好? 個人感覺第一種在高並發的情況下對系統的負載較高。

迷茫迷茫2765 天前618

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-04-24 09:14:41

    自己找到原因了:
    1 預設執行緒數是10是因為用的JAVA驅動版本太老了。版本為2.2,最新的版本為2.12,已經將預設一個連接的執行緒池設定為100了
    2 官方文件上給出的建議是開一個連接,然後從線程池取連接
    3 在2.12版本中MongoOpection類別被廢止了,但是是可以用的,設定connectionPerHost參數雖然可以表面上修改連接參數中線程池中的線程數量,但是實際上系統後台中線程池的上限還是100,參數沒有生效(懷疑是不是有別的設定方法),但是個人覺得也不太重要了,如果線程池能一致佔用在100以上,估計系統設計的也是有問題的

    回覆
    0
  • 取消回覆