1 什麼是服務器併發處理能力?java
一臺服務器在單位時間裏能處理的請求次數越多 服務器的能力越高---併發能力越強算法
2.衡量服務器併發處理能力的方法服務器
- 吞吐率
- 吞吐率 是指單位時間內服務器處理請求的最大數
- 從服務器的角度來看 實際併發用戶數能夠理解爲服務器當前維護表明不一樣用戶的文件描述符總數,也就是併發鏈接數,服務器通常會限制最多用戶數,由於高於某一個值後,單個用戶的響應時間會變慢,影響體驗
- 對於服務器來講 但願支持的吞吐量越高越好,可是對於用戶來講 等待時間越少越好,這是個魚與熊掌不可兼得的問題 最大併發數實際上是一個平衡點 這個平衡點是由用戶的容忍最大時間決定的
- 壓力測試
- 100個用戶同時向服務器分別請求10次
- 1個用戶向服務器請求1000次
- 以上兩個對於服務器的壓力是不同的,對於1個用戶 連續發送請求其實是指發送一個請求並接收到響應再發送下一個請求,這樣的對於1個用戶向服務器發送1000次請求,服務器的玩咯接收到緩衝區只有一個請求,而對於100個服務器分別進行10個請求,服務器網卡接收緩衝區最多由100個等待處理的請求,顯然這個時候服務器壓力更大
- 壓力測試前提考慮條件
- 併發用戶數
- 總請求數
- 請求資源描述
- 請求等待時間
- 服務器平均
- 壓力測試主要關心兩個時間
- 用戶平均等待時間
- 服務器平均請求處理時間
如何提升服務器的併發處理能力數據結構
- 提升CUP併發計算能力
- 多進程能夠對CPU時間進行切片,輪流使用CPU CPU速度很快 在由限的進程下 時間切分後輪流分配給進程 用戶是無感知的,而實際上,大多數進程的時間主要消耗在I/O上,現代計算機DMA技術可讓CPU不參與I/O操做的全過程,好比進程經過系統調用,使得CPU向網卡或者磁盤等I/O設備發出指令,而後進程被掛起,釋放CPU資源,等待I/O設備完成後再通知進程從新就緒
- 減小進程切換
- 進程切換,消耗時間是比較可觀的,因此爲了儘可能減小上下文切換次數,通常減小進程數,配合使用線程並配合其餘I/O模型開設計併發策略
- 減小使用沒必要要的鎖
- 多個請求會搶佔資源,若是同時搶佔一個資源,通常就會使用鎖機制來控制資源的競爭,過多的鎖機制會致使處理的時間過長,因此儘可能減小沒必要要的鎖機制
- 減小內存分配和釋放
- 服務器工做過程當中,須要大量的內存,使得內存的分配和釋放尤其重要,能夠經過改善數據結構和算法複製來適當減小臨時變量的內存分配和數據複製時間,再java程序中,能夠根據具體請款選擇不一樣的jvm 垃圾回收算法來提升jvm 內存分配和釋放效率
- 考慮使用持久鏈接
- 改進I/O模型
- DMA技術
- 異步I/O
- I/O多路複用
- 改進服務器併發策略
- 改進硬件環境