首頁>技術>

面對併發我們是如何最佳化KuangStudy網站效能的?

每個專案都會隨著使用者和資料的增長調整架構,來面對未來的問題,我們也不例外,在1月5號我們平臺正式公測後,引起了很多觀眾的熱烈反響,僅僅4天,註冊使用者便破萬。隨之而來的就是平臺開始變得卡頓,所以我們開始了我們的問題排查和最佳化,下面就和大家聊聊我們是如何處理的吧。

Nginx

一個網站,核心會分為幾部分:前端、後臺服務、資料庫,伺服器。我們最開始專案是打的jar包 ,一個tomcat支撐不了多少併發,Tomcat 預設配置的最大請求數是 150,也就是說同時支援 150 個併發,當然了,也可以將其改大。但是每次直播的時候,併發會暴增,所以我們只能開始搭建叢集。

搭建集群后引入了Nginx做反向代理,負載均衡也解決了,我們根據不同的伺服器的效能做了權重,果然增加了Nginx,做了負載之後,網站訪問快了不少。但是又迎來了Session共享的問題,我們將使用者的會話資訊放入redis,session共享搞定。接入層搞定了之後,我們發現我們的江湖模組還是很慢。

慢SQL

我們開始排查日誌,發現了一些SQL處理竟然要1.5s左右,簡直受不了。根本問題是我們做了聯表查詢,關聯的表比較多,於是我們開始最佳化資料庫結構,增加了許多冗餘欄位,後面江湖首頁,只用查詢一個表了,從蝸速到現在幾乎秒開了。分類我們從資料庫查詢最佳化到使用靜態資料管理,因為幾乎不會發生變化。同時訊息提示的sql還有個人主頁的sql我們也做了相應的處理,所以現在整個網站的響應速度大大提高了。

主從複製、讀寫分離

接入層的問題解決後,我們發現專案的壓力瓶頸轉移到了資料庫上面,開始我們還是單個數據庫,但是使用者的熱情遠遠超出了我們的想象,讀和寫都在一個數據庫,效能完全不太夠用,於是我們又買了一臺伺服器開始做主從,MySQL的主從還是比較簡單的,幾個命令就搭建好了,然後我們使用了sharding jdbc來做讀寫分離。寫完之後,網站整體的效能都提高了。於是我們發了版,保證了線上執行不卡頓。

信任與責任

連續一週,我們都是凌晨兩三點睡,不斷地最佳化使用者的建議,讓平臺越來越穩定和完善,不過努力都是值得的,使用者越來越多,迎來了眾多年會員的同時,我們也迎來了我們的第一個終身會員,這是信任,這是責任。我不能辜負大家的信任,做更多有意義的事情,做更純淨的社群,做更多的開源元件和更優質的教程來幫助大家,這是我們團隊的使命,也是學相伴的使命。

無論遇到多少的Bug,就像飛哥說的,我們滅了它就完事了!沒有解決不了的問題,這就是屬於我們技術人的底氣!

邀請入駐

如果大家平時有寫文章的愛好,或者已經有了很多筆記,也歡迎大家能夠將自己的文章搬到我們的kuangstudy平臺上,提出寶貴的意見,可能我們現在不是最好的,但是我們會努力變成最好的!

以學為伴,一生相伴!

看到了這裡,不妨點個喜歡支援我們一下吧!

17
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Docker-07-私有倉庫搭建