社交系統ThinkSNS+ 效能簡述
概述
本文主要描述 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 支援的分散式部署方案如下:
l 應用程式負載均衡,多臺伺服器部署 thinksns plus 系統,透過負載均衡器轉發請求到部署的伺服器。 thinsns plus 無需任何配置,但是要將會話資料、快取資料、使用者上傳檔案單獨部署,也就是上面 “thinksns plus 部署最佳化中的 #7 、 #8 、 #10 、 #13 條 ” 。
l 資料庫讀寫分離,安裝好資料庫之後,只需在簡單配置即可支援,也可以使用雲資料庫做讀寫分離。
l 分散式快取系統,搭建好分散式快取伺服器後僅需簡單配置即可支援,也可以採用相容 redis 協議的雲快取系統。
l 分散式檔案系統(目前不支援,已列入計劃,之後會支援雲端儲存)
系統最佳化和升級
以上提及的各種最佳化部署策略,部分都是建立在增加伺服器的基礎上提升系統的處理能力,並未涉及到系統程式的最佳化,那是不是程式最佳化就不重要了?
當然不是,初期,增加伺服器可以快速擴容系統處理能力,而且也是價效比最高的方式;假如聘一個人專門最佳化程式,一年 10 萬薪資,那這個人一年能提高程式的一倍效能也是很不錯了,但這十萬要是花在伺服器上面,效能可能立即提高 10 倍。
而且, thinksns plus 在不斷最佳化和改進產品,每次版本迭代,已安裝的 thinksns plus 程式都可以透過自動或手動的方式合併最新的特性,這其中有很多特性就是針對於效能的最佳化。保持更新不間斷,已安裝的 thinksns plus 程式效能也越來越好。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31448874/viewspace-2641268/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 社交系統ThinkSNS+技術概要
- 社交系統 ThinkSNS+ 技術概要
- 社交系統 ThinkSNS+ 3.0 更新播報
- 社交系統ThinkSNS+安裝部署演示
- 社交 App 系統 ThinkSNS+ PHP 開發概述APPPHP
- 社交系統ThinkSNS+ 0.7.3研發週報
- 社交系統ThinkSNS+ V1.9.1更新播報
- SNS社交系統ThinkSNS+安裝部署演示影片!
- 【開源社交系統ThinkSNS+研發日記】基於 Laravel Route 的 ThinkSNS+ ComponentLaravel
- 社交系統 ThinkSNS+ V2.2-V2.3 版本升級指南
- 開源社交系統ThinkSNS+ V2.2-V2.3升級指南
- 開源社交系統ThinkSNS+和ThinkSNS V4有什麼區別
- 社交系統ThinkSNS+第4階段IOS端研發更新發布播報iOS
- 開源BI系統簡述(轉載)
- 【研發日記五】解密社交系統ThinkSNS+如何計算字元顯示長度!解密字元
- 簡述linux系統中軟體包管理系統Linux
- 社交系統/社群系統“ThinkSNS+”H5及PC端即將內測!一起來“找茬”H5
- 如何做到 Laravel 配置可以網站後臺配置【社交系統ThinkSNS+研發日記四】Laravel網站
- 簡述多使用者電商系統原始碼原始碼
- 社交系統ThinkSNS+從V0.8.7到V0.8.9我們到底修復了多少個bug?
- iOS面試題:簡述效能最佳化iOS面試題
- 域名系統DNS簡述DNS
- 【社交系統研發日記六】ThinkSNS+ alpha.2 版本釋出,快來看看都有些什麼
- 【系統之音】Android程式的建立及啟動簡述Android
- 達觀文字指紋演算法和系統簡述演算法
- 簡述效能測試的重要概念,不談公式公式
- 對話系統綜述
- 簡述銷售管理CRM系統的銷售自動化
- 簡述 Linux 檔案系統的目錄結構(轉)Linux
- ThinkSNS+軟體系統研發日記 2月(上)
- 【作業系統】作業系統綜述(一)作業系統
- CNN 簡述CNN
- 簡述HTTPHTTP
- 社交系統 ThinkSNS 更新播報
- 簡述訊息佇列在電商系統使用場景以及工作模式佇列模式
- laravel-admin+vue開發高效能直播短視訊社交系統LaravelVue
- 即時聊天社交系統開發/聊天交友/ChatGPT社交聊天ChatGPT
- laravel-admin+vue+golang開發高效能直播短視訊社交系統LaravelVueGolang