提升項目併發量

提升項目併發量

1. 前端

1. 用cdn,靜態資源,放到cdn上(js,css,靜態圖片)css

2. 用精靈圖(一個大圖,上面又不少小圖,用定位,定位到小圖)前端

3. 前端緩存(響應頭設置緩存時間)cache-control (django如何向響應頭寫鍵值對:響應對象["aaa"]="aaa")python

2. nginx

1. nginx作集羣(dns解析,負載均衡硬件 f5)nginx

2. 動靜分離(靜態資源直接經過nginx轉發,拿去;uwsgi只負責處理動態請求)redis

3. 負載均衡(nginx配置)sql

4. 集羣化部署數據庫

5. 拆服務(分佈式)django

3. 項目部署

替代性能低的wsgiref部署項目小程序

使用uwsgi(c寫的wsgi服務器)部署緩存

使用gunicorn(python寫的wsgi服務器)部署

4. 代碼層面

1. 作緩存(redis)

2. 頁面靜態化(不適用於app和小程序),提早生成一個首頁頁面(被訪問頻繁的頁面),數據不一致(當有數據增長,再從新生成一次這個頁面),用異步:用celery,django的信號(異步操做),當對象保存時,從新生成靜態頁面

3. 異步操做(celery),一個請求須要耗時3s,設計成異步--請來了--》直接返回(任務已提交,請求正在處理)

  • 小米秒殺:您正在排隊(前端設置了定時,每隔5s,發送一個請求,查是否秒殺成功)
  • 保存視頻,發送郵件,保存文章
  • 後臺管理,統計最近三,六個月的訂單量--》折線圖,餅狀圖展現

4. 數據庫優化,優化sql,外鍵儘可能不創建,適當建索引,讀寫分離,數據庫集羣,分庫分表

5. 優化代碼,多線程處理,儘可能不在for循環裏查數據庫

5. 代碼優化不了的,壘機器

相關文章
相關標籤/搜索