社交系統ThinkSNS+ 效能簡述

ThinkSNS發表於2019-04-13

概述

         本文主要描述 ThinkSNS Plus 服務端系統效能、服務端高效能部署方案及最佳化措施、服務端系統持續最佳化及升級策略。本文未涉及前端( PC 站點、 H5 站點、 Android IOS )效能方案。

系統吞吐量

          壓測的伺服器為一臺阿里雲 ECS 伺服器,伺服器配置為 2vCPU/4GB/5Mbps/ 普通雲盤 200G 。安裝 thinksns plus 後給資料庫新增了少量資料,保證每個介面都是有資料的狀態;然後在伺服器本地壓測一些常用的資料讀取介面,壓測結果吞吐量為 30QPS 左右。

        30QPS 是指系統在每秒可以處理 30 個請求,一天有 86400 秒,算下來一天可以處理約 260 萬個請求;根據 thinksns plus 移動端統計,平均每頁面 3 個請求,假設使用者每日平均訪問 50 個頁面,計算結果為支援 1.7 萬左右的日活使用者(日活使用者不是註冊會員數量)。當然,這樣計算出來的結果是不準確的,計算中沒有考慮峰值和其他因素,需要根據實際業務做分析。

系統部署和最佳化

系統和基礎軟體最佳化

          最佳化系統和基礎軟體( nginx mysql php 等)能讓系統支援更多的連線數和請求,並且執行起來更穩定。具體的最佳化項根據不同的系統環境和業務需求,自行百度或谷歌上面有非常多的最佳化教程,不在一一列舉。

ThinkSNS Plus部署最佳化

1.  使用 php7 php7 較之前的 php5 版本效能提升一倍以上。

2.  開啟 PHP OPcache ,生產環境應該開啟 OPcache ,效能會有巨大提升。

3.  關閉除錯模式, .env 檔案中, APP_DEBUG 設定為 false ;可減少程式邏輯處理。

4.  配置資訊快取  php artisan config:cache ,快取配置檔案,減少磁碟 IO

5.  路由快取  php artisan route:cache ,快取路由檔案,減少磁碟 IO

6.  自動載入最佳化  composer dumpautoload ,最佳化自動載入。

7.  配置並使用  redis /memcached 來儲存會話,從記憶體中讀取會話資訊沒有磁碟 IO

8.  配置並使用  redis /memcached 來儲存快取資料,從記憶體中讀取快取資料沒有磁碟 IO

9.  將程式和資料安裝到 SSD 磁碟;以阿里雲 ECS 雲盤為例: SSD 雲盤 16000IOPS+ ,而所謂的高效雲盤不過 3000IOPS SSD 雲盤效率是高效雲盤的五倍以上。

10.  採用獨立的資料庫伺服器或採用雲資料庫如阿里雲: RDS

11.  採用獨立的快取伺服器或採用雲快取系統。

12.  使用 CDN 加速圖片、影片、檔案的訪問和下載。

13.  掛載單獨的磁碟用於儲存圖片、影片和其他使用者上傳的檔案。

以上最佳化項 #7~#13都不是必須的,但是建議都進行配置或選擇性配置。按要求最佳化以上內容之後,整體效能可以提高一倍以上。

分散式部署

         分散式部署為解決更大的業務需求,如更大的請求峰值、資料庫讀寫效能瓶頸,網路頻寬瓶頸等;目標為建立高可用性系統,單點故障不影響系統服務。目前 thinksns plus 支援的分散式部署方案如下:

應用程式負載均衡,多臺伺服器部署 thinksns plus 系統,透過負載均衡器轉發請求到部署的伺服器。 thinsns plus  無需任何配置,但是要將會話資料、快取資料、使用者上傳檔案單獨部署,也就是上面 “thinksns plus  部署最佳化中的 #7 #8 #10 #13

資料庫讀寫分離,安裝好資料庫之後,只需在簡單配置即可支援,也可以使用雲資料庫做讀寫分離。

分散式快取系統,搭建好分散式快取伺服器後僅需簡單配置即可支援,也可以採用相容 redis 協議的雲快取系統。

分散式檔案系統(目前不支援,已列入計劃,之後會支援雲端儲存)

系統最佳化和升級

          以上提及的各種最佳化部署策略,部分都是建立在增加伺服器的基礎上提升系統的處理能力,並未涉及到系統程式的最佳化,那是不是程式最佳化就不重要了?

         當然不是,初期,增加伺服器可以快速擴容系統處理能力,而且也是價效比最高的方式;假如聘一個人專門最佳化程式,一年 10 萬薪資,那這個人一年能提高程式的一倍效能也是很不錯了,但這十萬要是花在伺服器上面,效能可能立即提高 10 倍。

         而且, thinksns plus 在不斷最佳化和改進產品,每次版本迭代,已安裝的 thinksns plus 程式都可以透過自動或手動的方式合併最新的特性,這其中有很多特性就是針對於效能的最佳化。保持更新不間斷,已安裝的 thinksns plus 程式效能也越來越好。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31448874/viewspace-2641268/,如需轉載,請註明出處,否則將追究法律責任。

相關文章