社交系统ThinkSNS+ 性能简述
概述
???????? 本文主要描述 ThinkSNS Plus 服務(wù)端系統(tǒng)性能、服務(wù)端高性能部署方案及優(yōu)化措施、服務(wù)端系統(tǒng)持續(xù)優(yōu)化及升級(jí)策略。本文未涉及前端( PC 站點(diǎn)、 H5 站點(diǎn)、 Android 、 IOS )性能方案。
系統(tǒng)吞吐量
?????? ?? 壓測(cè)的服務(wù)器為一臺(tái)阿里云 ECS 服務(wù)器,服務(wù)器配置為 2vCPU/4GB/5Mbps/ 普通云盤 200G 。安裝 thinksns plus 后給數(shù)據(jù)庫(kù)添加了少量數(shù)據(jù),保證每個(gè)接口都是有數(shù)據(jù)的狀態(tài);然后在服務(wù)器本地壓測(cè)一些常用的數(shù)據(jù)讀取接口,壓測(cè)結(jié)果吞吐量為 30QPS 左右。
????????30QPS 是指系統(tǒng)在每秒可以處理 30 個(gè)請(qǐng)求,一天有 86400 秒,算下來(lái)一天可以處理約 260 萬(wàn)個(gè)請(qǐng)求;根據(jù) thinksns plus 移動(dòng)端統(tǒng)計(jì),平均每頁(yè)面 3 個(gè)請(qǐng)求,假設(shè)用戶每日平均訪問(wèn) 50 個(gè)頁(yè)面,計(jì)算結(jié)果為支持 1.7 萬(wàn)左右的日活用戶(日活用戶不是注冊(cè)會(huì)員數(shù)量)。當(dāng)然,這樣計(jì)算出來(lái)的結(jié)果是不準(zhǔn)確的,計(jì)算中沒(méi)有考慮峰值和其他因素,需要根據(jù)實(shí)際業(yè)務(wù)做分析。
系統(tǒng)部署和優(yōu)化
系統(tǒng)和基礎(chǔ)軟件優(yōu)化
??????? ? 優(yōu)化系統(tǒng)和基礎(chǔ)軟件( nginx 、 mysql 、 php 等)能讓系統(tǒng)支持更多的連接數(shù)和請(qǐng)求,并且運(yùn)行起來(lái)更穩(wěn)定。具體的優(yōu)化項(xiàng)根據(jù)不同的系統(tǒng)環(huán)境和業(yè)務(wù)需求,自行百度或谷歌上面有非常多的優(yōu)化教程,不在一一列舉。
ThinkSNS Plus部署優(yōu)化
1.? 使用 php7 , php7 較之前的 php5 版本性能提升一倍以上。
2.? 開啟 PHP OPcache ,生產(chǎn)環(huán)境應(yīng)該開啟 OPcache ,性能會(huì)有巨大提升。
3.? 關(guān)閉調(diào)試模式, .env 文件中, APP_DEBUG 設(shè)置為 false ;可減少程序邏輯處理。
4.? 配置信息緩存 ?php artisan config:cache ,緩存配置文件,減少磁盤 IO 。
5.? 路由緩存 ?php artisan route:cache ,緩存路由文件,減少磁盤 IO 。
6.? 自動(dòng)加載優(yōu)化 ?composer dumpautoload ,優(yōu)化自動(dòng)加載。
7.? 配置并使用 ?redis /memcached 來(lái)存儲(chǔ)會(huì)話,從內(nèi)存中讀取會(huì)話信息沒(méi)有磁盤 IO 。
8.? 配置并使用 ?redis /memcached 來(lái)存儲(chǔ)緩存數(shù)據(jù),從內(nèi)存中讀取緩存數(shù)據(jù)沒(méi)有磁盤 IO 。
9.? 將程序和數(shù)據(jù)安裝到 SSD 磁盤;以阿里云 ECS 云盤為例: SSD 云盤 16000IOPS+ ,而所謂的高效云盤不過(guò) 3000IOPS ; SSD 云盤效率是高效云盤的五倍以上。
10.? 采用獨(dú)立的數(shù)據(jù)庫(kù)服務(wù)器或采用云數(shù)據(jù)庫(kù)如阿里云: RDS 。
11.? 采用獨(dú)立的緩存服務(wù)器或采用云緩存系統(tǒng)。
12.? 使用 CDN 加速圖片、視頻、文件的訪問(wèn)和下載。
13.? 掛載單獨(dú)的磁盤用于存儲(chǔ)圖片、視頻和其他用戶上傳的文件。
以上優(yōu)化項(xiàng) #7~#13都不是必須的,但是建議都進(jìn)行配置或選擇性配置。按要求優(yōu)化以上內(nèi)容之后,整體性能可以提高一倍以上。
分布式部署
???????? 分布式部署為解決更大的業(yè)務(wù)需求,如更大的請(qǐng)求峰值、數(shù)據(jù)庫(kù)讀寫性能瓶頸,網(wǎng)絡(luò)帶寬瓶頸等;目標(biāo)為建立高可用性系統(tǒng),單點(diǎn)故障不影響系統(tǒng)服務(wù)。目前 thinksns plus 支持的分布式部署方案如下:
l? 應(yīng)用程序負(fù)載均衡,多臺(tái)服務(wù)器部署 thinksns plus 系統(tǒng),通過(guò)負(fù)載均衡器轉(zhuǎn)發(fā)請(qǐng)求到部署的服務(wù)器。 thinsns plus? 無(wú)需任何配置,但是要將會(huì)話數(shù)據(jù)、緩存數(shù)據(jù)、用戶上傳文件單獨(dú)部署,也就是上面 “thinksns plus? 部署優(yōu)化中的 #7 、 #8 、 #10 、 #13 條 ” 。
l? 數(shù)據(jù)庫(kù)讀寫分離,安裝好數(shù)據(jù)庫(kù)之后,只需在簡(jiǎn)單配置即可支持,也可以使用云數(shù)據(jù)庫(kù)做讀寫分離。
l? 分布式緩存系統(tǒng),搭建好分布式緩存服務(wù)器后僅需簡(jiǎn)單配置即可支持,也可以采用兼容 redis 協(xié)議的云緩存系統(tǒng)。
l? 分布式文件系統(tǒng)(目前不支持,已列入計(jì)劃,之后會(huì)支持云存儲(chǔ))
系統(tǒng)優(yōu)化和升級(jí)
??????? ? 以上提及的各種優(yōu)化部署策略,部分都是建立在增加服務(wù)器的基礎(chǔ)上提升系統(tǒng)的處理能力,并未涉及到系統(tǒng)程序的優(yōu)化,那是不是程序優(yōu)化就不重要了?
???????? 當(dāng)然不是,初期,增加服務(wù)器可以快速擴(kuò)容系統(tǒng)處理能力,而且也是性價(jià)比最高的方式;假如聘一個(gè)人專門優(yōu)化程序,一年 10 萬(wàn)薪資,那這個(gè)人一年能提高程序的一倍性能也是很不錯(cuò)了,但這十萬(wàn)要是花在服務(wù)器上面,性能可能立即提高 10 倍。
???????? 而且, thinksns plus 在不斷優(yōu)化和改進(jìn)產(chǎn)品,每次版本迭代,已安裝的 thinksns plus 程序都可以通過(guò)自動(dòng)或手動(dòng)的方式合并最新的特性,這其中有很多特性就是針對(duì)于性能的優(yōu)化。保持更新不間斷,已安裝的 thinksns plus 程序性能也越來(lái)越好。
來(lái)自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/31448874/viewspace-2641268/,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任。
轉(zhuǎn)載于:http://blog.itpub.net/31448874/viewspace-2641268/
總結(jié)
以上是生活随笔為你收集整理的社交系统ThinkSNS+ 性能简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: arm对应hex_ASCII与HEX对照
- 下一篇: windows如何删除默认打开方式