- 系統(tǒng)的硬件資源,比如說CPU個數(shù),速度,內(nèi)存大小等
- 一方面是指系統(tǒng)的軟件資源,比如操作系統(tǒng)允許用戶打開的最大文件描述符數(shù)量
- 并發(fā)處理 進(jìn)程池或線程池實現(xiàn)高效的并發(fā)模式(半同步、半異步、領(lǐng)導(dǎo)者、追隨者模式),以及高效的邏輯處理方式--有限狀態(tài)機(jī)
- 內(nèi)存的規(guī)劃使用
使用內(nèi)存池,以空間換時間,被實現(xiàn)創(chuàng)建好,避免動態(tài)分配,減少服務(wù)器對內(nèi)核的訪問頻率 - 避免不必要的數(shù)據(jù)復(fù)制,減少將數(shù)據(jù)從內(nèi)核緩沖拷貝到應(yīng)用程序緩沖區(qū)中。以ftp服務(wù)器來說,并不需要知道目標(biāo)文件的內(nèi)容,直接使用‘零拷貝’函數(shù)sendfile。當(dāng)兩個工作進(jìn)程之間需要傳遞大量數(shù)據(jù)時,應(yīng)該考慮使用共享內(nèi)存在他們直接共享這些數(shù)據(jù),而不是使用管道或者消息隊列來傳遞。
- 上下文切換和鎖
- 過多的進(jìn)程或縣城之間的切換占用了大量CPU時間,服務(wù)器真正處理業(yè)務(wù)邏輯的CPU時間比重就下降了。因此為每個客戶端創(chuàng)建一個工作線程是不可取的。高效并發(fā)模式
- 鎖的引入不僅需要處理業(yè)務(wù)邏輯,而且需要訪問內(nèi)核資源,所以盡量避免使用鎖。一定要使用的話,考慮粒度問題,比如讀寫鎖,當(dāng)工作線程都只讀一塊內(nèi)存區(qū)域時,讀寫鎖不會增加系統(tǒng)開銷,而只有需要寫是才能真正需要鎖住這塊內(nèi)存區(qū)域。
對于高峰和低峰的伸縮處理
適度的緩存