900萬pv小程序,高并發(fā)及緩存優(yōu)化蛾狗,入坑

小程序日均900萬的pv晋涣,超出想象,流量一路漲上來沉桌,服務(wù)器壓力太大谢鹊,各種宕機(jī),不得不開始各種優(yōu)化留凭。

首先硬件的升級是必不可少佃扼,是革命的本錢,硬件升級如下

1 單機(jī)

2單機(jī)+云數(shù)據(jù)庫

3單機(jī)+云數(shù)據(jù)庫+6G的redis緩存

4五臺服務(wù)器負(fù)載均衡 + 云數(shù)據(jù)庫多臺主從讀寫分離 + 16G的redis緩存

5十臺服務(wù)器負(fù)載均衡 + 云數(shù)據(jù)庫多臺主從讀寫分離 + 32G的redis緩存

因為我們的小程序有很少圖片文件蔼夜,沒有考慮CDN和oss文件存儲

硬件不夠用了就升級兼耀,不過可以一個月一個月的買,不然太貴了

下面的按一條一條的寫求冷,想到哪里寫哪里瘤运。

1、分析瓶頸匠题,小程序是兄弟公司的新手做的拯坟,不過效果還挺好,拿到我們這邊來推廣韭山,沒想到流量一路上漲郁季。當(dāng)流量多了以后冷溃,首先系統(tǒng)的瓶頸出現(xiàn)在數(shù)據(jù)庫,查詢很慢梦裂,看了看表似枕,索引做的不好,甚至有些關(guān)鍵的地方都沒有索引年柠,趕緊加上索引凿歼。

數(shù)據(jù)庫的壓力剛緩解一會,服務(wù)器cpu的占用一直在90%以上冗恨,甚至出現(xiàn)宕機(jī)毅往,分析了一下業(yè)務(wù),我們的小程序主要是社交出題答題類的派近,并沒有很高的計算需求攀唯,也就在最后用戶生成分享圖片的地方會有計算壓力,果然在從單機(jī)擴(kuò)展到負(fù)載均衡以后渴丸,服務(wù)器的cpu沒有再出現(xiàn)過壓力侯嘀。從此壓力主要圍繞在數(shù)據(jù)的讀和存這一塊,也就是數(shù)據(jù)庫和redis壓力

2谱轨、redis是個好東西戒幔,每次能正確的緩存常用的數(shù)據(jù),數(shù)據(jù)庫的壓力就能減輕很多土童。redis有兩種緩存思想诗茎,一是針對數(shù)據(jù)庫緩存,在用戶寫入數(shù)據(jù)的時候例如出題献汗、答題敢订,往數(shù)據(jù)庫和redis中都寫入,查詢的時候先插redis的數(shù)據(jù)罢吃,沒有的話從數(shù)據(jù)庫中瘸纭;二是針對接口緩存尿招,直接緩存接口返回的json數(shù)據(jù)矾柜,用戶再次查相同的內(nèi)容,直接返回json數(shù)據(jù)就谜。我個人比較喜歡第二種緩存方式怪蔑,簡單高效,但要針對數(shù)據(jù)不怎么變化的接口丧荐,根據(jù)查詢條件生成合理的redis key值缆瓣,還要設(shè)置合理的過期時間,不然數(shù)據(jù)量太大篮奄。例如有一個接口是用戶查詢自己之前出的題及正確答案捆愁,因為自己出的題不可能再變,就根據(jù)他的這一套題的id進(jìn)行緩存窟却;

3昼丑、負(fù)載均衡,將流量分發(fā)到不同的服務(wù)器上進(jìn)行處理夸赫,對cpu的壓力大大減輕菩帝,但因為數(shù)據(jù)庫的數(shù)據(jù)要共享,只能用云數(shù)據(jù)庫茬腿,對數(shù)據(jù)庫的幫助不明顯

未完待續(xù)

4呼奢、小程序矩陣  社交類小程序免不了分享之類的操作,使用多個小程序部署切平,小程序之間使用unionid互通握础,減小微信突然抽風(fēng)封你功能或小程序帶來的損失

5、業(yè)務(wù)代碼優(yōu)化

6悴品、數(shù)據(jù)庫表結(jié)構(gòu)問題

為了避免過多的join聯(lián)合查詢禀综,可以采取以空間換時間的策略,例如用戶的出題表苔严,肯定會存用戶的id定枷,然后再根據(jù)id去用戶表里查昵稱,如果只是查昵稱就不劃算了届氢,干脆在出題表里也存昵稱欠窒,就不用去用戶表里查詢了,只是舉個例子

7退子、前端提交數(shù)據(jù)過濾

前端數(shù)據(jù)過濾及驗證岖妄,雖然并不能保證100%安全,但能大大的減少bug出現(xiàn)的風(fēng)險和可能大大減少服務(wù)器的壓力

8寂祥、上千萬條記錄甚至上億記錄的大表衣吠,不要使用limit分頁查詢,即使有索引壤靶,速度一定慢到懷疑人生缚俏,一般類似的需求,不如直接使用主鍵的區(qū)間贮乳,例如十萬的區(qū)間按主鍵取數(shù)據(jù)忧换,id 1100000,100000200000,以此類推向拆,這樣的取

9亚茬、開發(fā)時很多人都有喜歡到處記日志的習(xí)慣,問題這些日志隱藏在代碼中浓恳,也不影響使用刹缝,但當(dāng)訪問量多起來碗暗,這些日志文件動輒就達(dá)到上G的大小,浪費(fèi)磁盤空間和IO梢夯,要是只是錯誤日志也就罷了

10言疗、各種手機(jī)設(shè)備的兼容性問題

gh_904e0f96899e_860.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颂砸,隨后出現(xiàn)的幾起案子噪奄,更是在濱河造成了極大的恐慌,老刑警劉巖人乓,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件勤篮,死亡現(xiàn)場離奇詭異,居然都是意外死亡色罚,警方通過查閱死者的電腦和手機(jī)碰缔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來戳护,“玉大人手负,你說我怎么就攤上這事」贸撸” “怎么了竟终?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長切蟋。 經(jīng)常有香客問我统捶,道長,這世上最難降的妖魔是什么柄粹? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任喘鸟,我火速辦了婚禮,結(jié)果婚禮上驻右,老公的妹妹穿的比我還像新娘什黑。我一直安慰自己,他們只是感情好堪夭,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布愕把。 她就那樣靜靜地躺著,像睡著了一般森爽。 火紅的嫁衣襯著肌膚如雪恨豁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天爬迟,我揣著相機(jī)與錄音橘蜜,去河邊找鬼。 笑死付呕,一個胖子當(dāng)著我的面吹牛计福,可吹牛的內(nèi)容都是我干的跌捆。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼象颖,長吁一口氣:“原來是場噩夢啊……” “哼佩厚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起力麸,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎育韩,沒想到半個月后克蚂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黎棠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年肥橙,在試婚紗的時候發(fā)現(xiàn)自己被綠了晒他。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡赤屋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壁袄,到底是詐尸還是另有隱情类早,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布嗜逻,位于F島的核電站涩僻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏栈顷。R本人自食惡果不足惜逆日,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萄凤。 院中可真熱鬧室抽,春花似錦、人聲如沸靡努。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惑朦。三九已至神年,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間行嗤,已是汗流浹背已日。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留栅屏,地道東北人飘千。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓堂鲜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親护奈。 傳聞我的和親對象是個殘疾皇子缔莲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容