服務器中提高并發處理能力的方法:1.多進程,提高CPU并發度;2.減少使用不必要的鎖,減少并發請求對于共享資源的競爭;3.減少進程切換,減少上下文切換次數;4.考慮減少內存分配和釋放,減少中間臨時變量的內存分配;
具體分析如下:
1.多進程
進程的操作可以對CPU時間進行輪流使用,對CPU的計算和IO操作重疊利用。多進程通過系統調用,使得CPU向網卡或者磁盤等I/O設備發出指令,然后進程被掛起,釋放出CPU資源,等待I/O設備完成工作后通過中斷來通知進程重新就緒。多進程不僅能提高CPU的并發度,其優越性還體現在獨立的內存地址空間和生命周期所帶來的穩定性和健壯性,其中一個進程崩潰不會影響到另一個進程。
2.減少使用不必要的鎖
服務器處理大量并發請求時,多個請求處理任務時存在一些資源搶占競爭,這時一般采用“鎖”機制來控制資源的占用。當一個任務占用資源時,我們鎖住資源,這時其它任務都在等待鎖的釋放,這個現象稱為鎖競爭。通過鎖競爭的本質,我們要意識到盡量減少并發請求對于共享資源的競爭。在允許情況下關閉服務器訪問日志,這可以大大減少在鎖等待時的延遲時間。要最大程度減少無辜的等待時間。
3.減少進程切換
當硬件上下文頻繁裝入和移出時,為了盡量減少上下文切換次數,最簡單的做法就是減少進程數,盡量使用線程并配合其它I/O模型來設計并發策略。還可以考慮使用進程綁定CPU技術,增加CPU緩存的命中率。
4.考慮減少內存分配和釋放
服務器的工作過程中,需要大量的內存,使得內存的分配和釋放工作尤為重要。可以通過改善數據結構和算法復制度來適當減少中間臨時變量的內存分配及數據復制時間,而服務器本身也使用了各自的策略來提高效率。