運(yùn)營(yíng)活動(dòng)系統(tǒng)防撲街指南

0 評(píng)論 13193 瀏覽 26 收藏 11 分鐘

運(yùn)營(yíng)同學(xué)搞活動(dòng),最不希望看到的,恐怕就是系統(tǒng)撲街了。這種事情似乎沒(méi)什么辦法,公司程序員水平太次,總拖后腿,我能怎么辦?我也很為難啊。其實(shí),這事未必都是程序員的鍋,作為運(yùn)營(yíng)同學(xué),要想避免系統(tǒng)撲街也是有方法可以遵循的。

那么常見(jiàn)的活動(dòng)撲街都有哪些表現(xiàn)呢?

通常,按照技術(shù)的專業(yè)術(shù)語(yǔ)來(lái)講,有 40x 及 50x 系列。我們?cè)诰W(wǎng)站上經(jīng)常能見(jiàn)到的,就是類似 “404 頁(yè)面找不到了“,這種提示。可能還配有卡通和賣萌的文案,但是實(shí)質(zhì)都一樣,就是系統(tǒng)找不到你要訪問(wèn)的頁(yè)面。

還有就是 50x 系列,會(huì)提示類似“啊哦,系統(tǒng)崩潰了~”,或者“系統(tǒng)繁忙,請(qǐng)稍后再試”。意思就是系統(tǒng)真的撲街了,崩潰了。

更輕量一點(diǎn)的,可能是頁(yè)面長(zhǎng)時(shí)間加載中,部分或者全部?jī)?nèi)容不可見(jiàn)。這說(shuō)明系統(tǒng)的響應(yīng)超時(shí)了,忙不過(guò)來(lái)了。當(dāng)然這里要排除客戶端的網(wǎng)絡(luò)因素,也可能是網(wǎng)絡(luò)太慢導(dǎo)致。

對(duì)于比較復(fù)雜的網(wǎng)頁(yè)來(lái)說(shuō),由于各個(gè)模塊可能是分開(kāi)加載的內(nèi)容,所以也有可能部分內(nèi)容不可見(jiàn),即單個(gè)數(shù)據(jù)接口掛掉,或者忙不過(guò)來(lái)了,比如頁(yè)面的一個(gè)排行榜長(zhǎng)時(shí)間加載不出來(lái)。

那么,作為運(yùn)營(yíng)同學(xué),對(duì)于這些常見(jiàn)的錯(cuò)誤,我們能做些什么呢?下面,按照錯(cuò)誤的嚴(yán)重級(jí)別,我們分別進(jìn)行講解。

No.1:50x 應(yīng)對(duì)方案

首先,最嚴(yán)重的莫過(guò)于 50x 系列了,就是系統(tǒng)真的掛了。這種情況有可能是運(yùn)維的鍋,也可能是程序員的鍋,導(dǎo)致系統(tǒng)架構(gòu)不合理,代碼不合理,或者機(jī)器性能不足,帶寬不夠等等。排除程序錯(cuò)誤的硬傷,這些都可以概括為“系統(tǒng)能力與所承接的流量不匹配”。也就是說(shuō),你的系統(tǒng)承接不了這么大的流量。

我們都知道系統(tǒng)扛不住可以加機(jī)器,但是加機(jī)器也有局限性,比如臨時(shí)擴(kuò)充的速度,多臺(tái)機(jī)器數(shù)據(jù)同步等問(wèn)題,流量到了某個(gè)量級(jí),就不是加機(jī)器能解決的問(wèn)題了。

那我們能做什么呢?

那就是,預(yù)估活動(dòng)流量,提前周知開(kāi)發(fā)和運(yùn)維以及其他相關(guān)人員。如果不好預(yù)估,那么可以讓相關(guān)技術(shù)同學(xué)根據(jù)以往活動(dòng)的經(jīng)驗(yàn),在預(yù)算允許的情況下,盡量為系統(tǒng)多預(yù)留一些能力,比如加機(jī)器,提升帶寬等。很多時(shí)候不是機(jī)器不行,而是出口帶寬受限,比如調(diào)用微信的 api 慢,往往是自身機(jī)器出口帶寬不夠,而不是微信的服務(wù)器慢。提前多留點(diǎn)余地總比系統(tǒng)掛掉強(qiáng)。接不住的流量沒(méi)有任何意義,反而會(huì)影響品牌口碑。

No.2:40x 應(yīng)對(duì)方案

對(duì)于這類錯(cuò)誤,往往是查找文檔出了問(wèn)題,常見(jiàn)的原因可能是服務(wù)器權(quán)限問(wèn)題導(dǎo)致 403,路徑配置錯(cuò)誤或者文件沒(méi)有發(fā)布成功導(dǎo)致 404。那么運(yùn)營(yíng)同學(xué)尤其要注意的是,在一些可配置的地方粘貼的 URL 是否符合規(guī)范,比如是否包含特殊字符,參數(shù)的?和 & 是否使用正確等等。有些時(shí)候僅僅是因?yàn)殒溄优渲缅e(cuò)誤,才導(dǎo)致的 404,這完全是可以避免的。

還有種可能是開(kāi)發(fā)哥發(fā)布失敗,那么對(duì)于重要的活動(dòng),周知上線后,不管有多忙,一定要自己親自體驗(yàn)一遍,不要因?yàn)閯e人的錯(cuò)誤,影響了自己的工作。

No.3:響應(yīng)慢的應(yīng)對(duì)方案

系統(tǒng)響應(yīng)慢往往是 50x 的前兆,如果長(zhǎng)時(shí)間無(wú)響應(yīng),這個(gè)接口的后端進(jìn)程就可能被殺死,那么這次客戶端的網(wǎng)絡(luò)請(qǐng)求,就無(wú)法響應(yīng)了。歸根結(jié)底,還是系統(tǒng)能力與承接流量不匹配。那么,除了前面講到的提前加機(jī)器,加帶寬,還有沒(méi)有什么可以做的呢?當(dāng)然有。

如果這種問(wèn)題經(jīng)常出現(xiàn),那么一定要提需求讓開(kāi)發(fā)和運(yùn)維哥優(yōu)化系統(tǒng)架構(gòu),優(yōu)化程序代碼,增加多級(jí)緩存等等操作,提升系統(tǒng)的抗壓能力。

對(duì)于活動(dòng)的節(jié)奏,往往也是有彈性空間的,比如公眾號(hào)推送,可以選擇分組推送,用戶對(duì)于自己比別人收到消息早點(diǎn)晚點(diǎn),是沒(méi)什么感知的。稍微分分組,就可以有效緩解系統(tǒng)壓力。還有就是推送的圖文消息中,鏈接到自己系統(tǒng)的入口放在哪個(gè)位置也很關(guān)鍵,比如放在頁(yè)面底部,那在用戶瀏覽頁(yè)面的時(shí)候,就已經(jīng)在時(shí)間上拉開(kāi)了差距,分散了系統(tǒng)的壓力。

有些系統(tǒng)壓力,是定時(shí)任務(wù)造成的,比如業(yè)務(wù)需求中經(jīng)常有些“自動(dòng)任務(wù)”,在每天的特定時(shí)間執(zhí)行。而對(duì)于每日的定時(shí)任務(wù),許多開(kāi)發(fā)哥會(huì)默認(rèn)使用 00:00 這個(gè)時(shí)間設(shè)置,從而導(dǎo)致每天的 00:00 系統(tǒng)負(fù)載都處于高峰。而運(yùn)營(yíng)活動(dòng)也喜歡在這個(gè)時(shí)間,比如雙十一的搶購(gòu),付尾款等等。這就導(dǎo)致壓力都集中在了一起,自己都把自己拖垮了。

對(duì)于這部分,我們能做的就是考慮下這些定時(shí)任務(wù)的需求,能否不在 00:00 整,比如凌晨 02:00 執(zhí)行是否可行?這樣至少能把我們內(nèi)部的壓力分散開(kāi)來(lái),然后才有資源去承接外部的流量壓力。

通過(guò)修改活動(dòng)規(guī)則也是可以分散壓力的。你可以不要求大家都在很小的時(shí)間窗口來(lái)?yè)屬?gòu),而是稍微拉長(zhǎng)一點(diǎn)活動(dòng)節(jié)奏。比如連續(xù)簽到打卡之類。

No.4:躲不開(kāi)的流量

前面的方案都是分散系統(tǒng)的整體流量,那么對(duì)于已經(jīng)來(lái)了的流量,有沒(méi)有什么辦法呢?前面說(shuō)過(guò),一定程度內(nèi)可以加機(jī)器硬抗,但是最好提前有準(zhǔn)備,不然可能擴(kuò)容搞定了,瞬間的流量高峰已經(jīng)過(guò)去了。

那么對(duì)于已經(jīng)進(jìn)入我們頁(yè)面的用戶來(lái)說(shuō),我們還可以通過(guò)修改交互的方式,使消耗系統(tǒng)資源多的操作滯后。比如頁(yè)面如果一進(jìn)來(lái)就直接操作數(shù)據(jù)庫(kù)查詢一個(gè)大的排行榜,就很耗資源。當(dāng)然,這種情況可以用緩存來(lái)解決,但是有些情況是很難緩存,比如:查銀行余額、積分余額等。這些資產(chǎn)相關(guān)往往要求高度的實(shí)時(shí)性,那么我們能做的,就只有設(shè)計(jì)一個(gè)可以拉開(kāi)流量的交互。

典型的例子是,活動(dòng)邏輯很重,為了拉低流量高峰,在活動(dòng)頁(yè)前面加前導(dǎo)頁(yè),做氛圍圖和活動(dòng)說(shuō)明,然后增加按鈕“立即參與”,然后才去邏輯更重的活動(dòng)頁(yè)。這樣雖然稍微有損用戶體驗(yàn),但是也比高峰時(shí)候頁(yè)面卡在那里強(qiáng)。由于每個(gè)人瀏覽和點(diǎn)擊的時(shí)間不一樣,這種方法可以有效削峰。

同理,對(duì)于實(shí)時(shí)性要求不高的業(yè)務(wù)邏輯,可以異步化,稍微晚一點(diǎn)更新也沒(méi)關(guān)系。這樣就可以用定時(shí)任務(wù)去處理,哪怕時(shí)間間隔短一點(diǎn),也是按照隊(duì)列井然有序在處理,不會(huì)一下子吃掉系統(tǒng)的資源。對(duì)于搶購(gòu)等業(yè)務(wù),更是要強(qiáng)制設(shè)計(jì)成排隊(duì)機(jī)制,不管來(lái)多少人,都不做太重的業(yè)務(wù)邏輯,先丟到隊(duì)列里去等待,我們只選部分人繼續(xù)后面的業(yè)務(wù)邏輯。這些內(nèi)容又很大程度上依賴系統(tǒng)架構(gòu)師的工作,這里就不討論了。

最后,臨時(shí)出了問(wèn)題,還是趕緊去找開(kāi)發(fā)哥,運(yùn)維哥,千萬(wàn)別猶豫。即事中的應(yīng)急方案,如果沒(méi)有提前制定,只能靠技術(shù)人員的應(yīng)變能力了。然后事后再通過(guò)活動(dòng)復(fù)盤(pán),總結(jié)各方經(jīng)驗(yàn)與教訓(xùn),避免下次悲劇的發(fā)生。

總結(jié)一下,核心就是以下 6 點(diǎn):

  1. 整體活動(dòng)節(jié)奏周知,事前預(yù)防;
  2. 檢查配置信息,是否人為錯(cuò)誤;
  3. 修改活動(dòng)規(guī)則,拉長(zhǎng)活動(dòng)時(shí)間,分組推送;
  4. 修改交互,邏輯后置;
  5. 提前計(jì)劃事中應(yīng)急方案;
  6. 事后復(fù)盤(pán),總結(jié)教訓(xùn)。

怎么樣,各位同學(xué)學(xué)會(huì)了嗎?

#專欄作家#

姬小光,微信公眾號(hào):姬小光(ID:hi-laser),人人都是產(chǎn)品經(jīng)理專欄作家?,F(xiàn)任美的集團(tuán)電子商務(wù)有限公司商城前端組負(fù)責(zé)人,曾就職于淘寶/騰訊/京東,擁有 10 年電商研發(fā)經(jīng)驗(yàn),對(duì)產(chǎn)品、設(shè)計(jì)、研發(fā)、運(yùn)營(yíng)都有一定見(jiàn)解。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒(méi)評(píng)論,等你發(fā)揮!