高併發下怎麼優化能避免伺服器壓力過大

2021-08-22 16:27:01 字數 1302 閱讀 8379

高併發下怎麼優化能避免伺服器壓力過大

1,整個架構:可採用分布式架構,利用微服務架構拆分服務部署在不同的服務節點,避免單節點宕機引起的服務不可用!

高併發下怎麼優化能避免伺服器壓力過大?

2,資料庫:採用主從複製,讀寫分離,甚至是分庫分表,表資料根據查詢方式的不同採用不同的索引比如b tree,hash,關鍵字段加索引,sql避免復合函式,避免組合排序等,避免使用非索引字段作為條件分組,排序等!減少互動次數,一定不要用select *!

3,加快取:使用諸如memcache,redis,ehcache等快取資料庫定義表,結果表等等,資料庫的中間資料放快取,避免多次訪問修改表資料!登入資訊session等放快取實現共享!諸如商品分類,省市區,年齡分類等不常改變的資料,放快取,不要放資料庫!

同時要避免快取雪崩和穿透等問題的出現導致快取崩潰!

高併發下怎麼優化能避免伺服器壓力過大?

4,增量統計:不要實時統計大量的資料,應該採用晚間定時任務統計,增量統計等方式提前進行統計,避免實時統計的記憶體,cpu壓力!

5,加伺服器:等大檔案,一定要單獨經過檔案伺服器,避免io速度對動態資料的影響!保證系統不會因為檔案而崩潰!

6,html檔案,列舉,靜態的方法返回值等靜態化處理,放入快取!

7,負載均衡:使用nginx等對訪問量過大的服務採用負載均衡,實現服務集群,提高服務的最大併發數,防止壓力過大導致單個服務的崩潰!

高併發下怎麼優化能避免伺服器壓力過大?

8,加入搜尋引擎:對於sql中常出現的like,in等語句,使用lucence或者solr中介軟體,將必要的,依賴模糊搜尋的字段和資料使用搜尋引擎進行儲存,提公升搜尋速度!#注意:全量資料和增量資料進行定時任務更新!

9,使用訊息中介軟體:對服務之間的資料傳輸,使用諸如rabbit mq,kafka等等分布式訊息佇列非同步傳輸,防止同步傳輸資料的阻塞和資料丟失!

高併發下怎麼優化能避免伺服器壓力過大?

10,拋棄tomcat:做web開發,接觸最早的應用伺服器就是tomcat了,但是tomcat的單個最大併發量只能不到1w!採取netty等actor模型的高效能應用伺服器!

11,多執行緒:現在的伺服器都是多核心處理模式,如果**採用單執行緒,同步方式處理,極大的浪費了cpu使用效率和執行時間!

高併發下怎麼優化能避免伺服器壓力過大?

12,避免阻塞:避免bio,blockingqueue等常常引起長久阻塞的技術,而改為nio等非同步處理機制!

13,cdn加速:如果訪問量實在過大,可根據請求**採用cdn分流技術,避免大流量完成系統崩潰!

14,避免低效**:不要頻繁建立物件,引用,少用同步鎖,不要建立大量執行緒,不要多層for迴圈

3 高併發下的系統優化 寫操作壓測

關於寫操作,想了半天感覺和讀操作差不多,那麼這裡就模擬一下秒殺的情景,看下500的數量,搶購時訂單多久搶完,排隊的情景。測試場景 請求進來以後進行redis鑑權,查詢商品是否存在 資料庫百萬級 獲取使用者詳細資訊,落單減庫存 百萬級 訂單入庫,增加銷量 百萬級 在之前配置下,redis記錄商品資訊,...

一些高併發下web伺服器http異常狀態碼分析

環境說明 壓測工具 apache ab web伺服器 nginx 1.8.0 php 5.6.25 php指令碼 get.php 注 nignx 設定超時 fastcgi connect timeout 60 fastcgi send timeout 60 fastcgi read timeout ...

Epoll實現伺服器高併發

最近在做乙個關於高併發伺服器相關的專案需要用到非同步 非阻塞io通訊,實現高tcp併發。以下用epoll技術實現乙個簡單的tcp高併發伺服器,驗證無業務處理的情況下,epoll處理併發連線的數的效果。include include include include include include in...