高併發 效能調優 架構

2021-09-24 15:52:15 字數 1183 閱讀 1630

關於效能需要熟悉三個指標:併發使用者,響應時間,tps(每秒事務處理個數))

比如:單個伺服器配置為32核,64g記憶體,jvm記憶體為6g,效能測試結果:平均響應時間為200ms,併發使用者為300個,tps為1500為了滿足未來發展需要,系統需配備多台伺服器,如:4臺.

1.通訊 2.應用集群部署 3.快取 4.資源動靜分離 5.資料庫集群(orcle rac) 6.soa服務優化

1.1首先說一下通訊,通訊層面需要採取非同步執行緒通訊模式,比如socket nio非同步執行緒通訊模式,此模式有負責接收訊息的執行緒,有負責處理訊息的執行緒,流水線模式分工協作.常使用tomca6.0以後對8080埠的通訊監聽就是採用的socket nio 非同步模式.

1.2說到通訊還需要提一下另外乙個場景,在通訊層面採用佇列(比如activemp) 或者快取(redis).列入處理秒殺場景,併發量大,先將所有請求接收放入佇列或者快取然後從佇列或者快取中獲取部分請求處理,處理完一部分再獲取一部分處理,直到秒殺結束.如果秒殺結束,佇列中還有訊息未處理,那麼將這些訊息返回給客戶端,返回商品已售空.

2.快取,我們專案採用redis坐快取伺服器,將查詢多修改少的資料放入快取(比如:產品的列表),頁面顯示產品時直接從快取中獲取,無需通過資料查詢,減少io操作,大大提高查詢速度,同事減輕資料庫壓力

3.應用的集群部署,我們的項採用nginx做反向**,將使用者請求分發到集群環境中的不同伺服器,降低單個伺服器的壓力,起到負載均衡的作用,同時,他帶來了很多其他好處,比如:增強系統併發處理能力,可以處理更多使用者請求;防止因某個伺服器宕機而導致業務中斷的單點故障,因為某台伺服器出現故障時,nginx反向**會做到自動隔離該伺服器,不在將請求**到宕機伺服器;可以做到熱部署,在上線過程中選擇部分伺服器重啟,保證服務不間斷執行.

4.資源動靜分離,專案如果有大量js,css,html,等靜態檔案,需將這些靜態資源單獨部署到伺服器(如阿里的cdn),然後通過遠端鏈結位址(比如訪問,可以提高載入速度,同時減輕伺服器壓力.

5.資料庫集群部署,可以防止伺服器訪問應用的單點故障,減輕資料庫訪問壓力,我們公司dba工程師會將oracle部署為集群的rac模式,用到兩台伺服器安裝資料庫,兩台資料庫伺服器資料儲存在乙個共享磁碟.

6.soa服務優化,公司採用dubbo分布式框架,系統直接的介面呼叫通過dubbo,比如我們專案呼叫財務系統的支付介面,該介面是由財務系統將位址發布到dubbo,然後我們寫http客戶端呼叫dubbo,由dubbo請求**財務系統.

三千高併發效能優化

3臺64核的應用伺服器,每個應用伺服器部署4個節點 一台資料庫伺服器 3個負載均衡nginx,每個nginx導向4個節點。高併發大量的系統日誌將導致系統堵塞,日誌只開啟error級別,或者日誌在另一線程批量處理。為了保持乙個編號不重複,每次獲取都到資料庫中加1,這樣將導致資源競爭鎖住,調整為每次取一...

SpringCloud高併發效能優化

當系統的使用者量上來,每秒qps上千後,可能就會導致系統的各種卡頓,超時等情況,這時優化操作不可避免 第一步 優化大sql,對於多表關聯的sql,當單錶資料幾百上千萬行時,執行可能會達到好幾秒,對微服務系統來說,我是不建議join多表操作,除非是資料量少的維表,我們可以將一句大sql拆分成多個過程,...

開發效能調優之資料傾斜調優

常見表現 在hive中 map階段早就跑完了,reduce階段一直卡在99 很大情況是發生了資料傾斜,整個任務在等某個節點跑完。在spark中大部分的task執行的特別快,剩下的一些task執行的特別慢,要幾分鐘或幾十分鐘才執行完乙個task hive中大表join的時候,容易產生資料傾斜問題,sp...