亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多少線程太多了?

多少線程太多了?

慕尼黑8549860 2019-12-18 13:12:26
多少線程太多了?我正在編寫一個服務器,當請求傳入時,我將每個動作分支到一個線程中。我這樣做是因為幾乎每個請求都會進行數據庫查詢。我正在使用線程池庫來減少線程的構造/破壞。但是,我的問題是-對于這樣的I/O線程來說,什么是一個好的臨界點?我知道這只是一個粗略的估計,但我們說的是數百人嗎?成千上萬?編輯:謝謝大家的回應,似乎我要測試一下才能找到我的線計數上限。但問題是:我怎么知道我撞到了那個天花板?我該測量什么?
查看完整描述

3 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

這個問題討論得很透徹,我沒有機會閱讀所有的答復。但是,在查看可以在給定系統中和平共存的同步線程數量上限時,需要考慮以下幾點。

  1. 線程堆棧大?。涸贚inux中,默認的線程堆棧大小是8MB(您可以使用uLim-a查找它)。
  2. 給定操作系統變體支持的最大虛擬內存。LinuxKernel2.4支持2GB的內存地址空間。使用內核2.6,我要大一


查看完整回答
反對 回復 2019-12-19
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

如果您的線程正在執行任何類型的資源密集型工作(CPU/磁盤),那么您將很少看到超過一兩個的好處,而且過多的線程會很快降低性能。

“最好的情況”是,以后的線程在第一個線程完成時會停止運行,或者一些線程在資源上具有低開銷的低爭用塊。最糟糕的情況是,您開始破壞緩存/磁盤/網絡,而您的總體吞吐量則下降。

一個好的解決方案是將請求放在一個池中,然后將請求從線程池發送給工作線程(是的,避免連續的線程創建/破壞是一個偉大的第一步)。

然后,可以根據分析結果、正在運行的硬件以及機器上可能發生的其他事情來調整和縮放此池中的活動線程數。




查看完整回答
反對 回復 2019-12-19
  • 3 回答
  • 0 關注
  • 769 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號