一次生產事故的優化經歷

在一次正常的活動促銷之后,客服開始陸續反饋有用戶反應在搶標的時候打不開網頁或者APP,在打開的時候標的就已經被搶光了,剛開始沒有特別的上心,覺得搶標不就是這樣嗎,搶小米手機的時候也不就這樣嗎?隨著活動繼續推進,有更多的用戶強烈抗議,用戶領了加息卷或者抵現卷之后搶不上標的,認為是平臺作假故意不讓使用以達到節省資源。


分析過程

其實以前也會有陸續的用戶反饋不減少,給客戶以小米搶手機為例子忽悠了過去,這次用戶反饋太過強烈,才讓我們重視了起來。我們前端一共三款產品,app、官網、H5,其中app使用量最大,官網其次,H5平時使用量極少但是做活動期間流量會暴增(活動一般都是H5游戲居多,H5也便于推廣營銷),前端的三款產品都是分別使用lvs負載到后端的兩臺web服務器中(如下圖),這次用戶反饋基本在web和app端,所以重點觀察這四臺服務器。

once1.png

首先懷疑網絡帶寬是否被涌滿,找到網絡工程師通過工具來監控,在搶標的時候帶寬最高使用率只有70%左右,隨排除之;再次懷疑web服務器是否抗不住了,使用top命令查看官網負載的兩臺服務器,在搶標的瞬間會飆到6-8左右,搶標后也慢慢的恢復了正常,app兩臺服務器高峰到10-12,隨后也恢復正常。

跟蹤web服務器業務日志,發現在數據庫更新層報請求不到新的數據庫連接或者數據庫連接已經用完,認為是數據庫的最大連接數太小,于是調整mysql數據庫最大連接數為以往的3倍;下次搶標的時候繼續觀察業務日志,發現已經不報數據庫鏈接的相關錯誤了,但還是很多用戶反饋搶標時候打不開頁面。

繼續跟蹤web服務器,在搶標時使用命令(ps -ef|grep httpd|wc -l)查看httpd得連接數有1千左右,隨機查看apache配置文件中設置的最大連接數為1024(apache默認的最大連接數為256),原來搶標期間連接數已經到達最大連接數,很多用戶在搶標的過程中已經獲取不到http連接導致頁面無響應或者app一直在等待中。于是調整apache配置文件中的最大連接數為1024*3。

在搶標過程中繼續觀察,apache的連接數在搶標的時候仍然可以飆到2600-2800之間,根據客服反饋,仍然有很多用戶反饋搶標的問題,但比之前稍微好一點,但是有零星的用戶反饋已經搶到標的,最后又給回退了。然后繼續觀察數據庫服務器,使用top命令和MySQLWorkbench查看mysql主庫和從庫的各項負載嚇一跳(如下圖),mysql服務器主庫的各項指標均已經達到峰值,而從庫幾乎沒有太大壓力。

mysql_before.jpg

跟蹤代碼發現,三端的業務代碼全部連接主庫,從庫只有后臺的查詢業務在使用,于是立刻啟動改造;將除過搶標過程中的查詢外,其它頁面或者業務的所有查詢改造為查詢從庫,改造之后觀察,發現主庫的壓力明顯減少,從庫的壓力開始上來了。如下圖:

mysql_after.jpg

根據客服的反饋,改造之后搶到標回退的問題幾乎沒有了,搶標過程中頁面打不開或者打開慢的問題有一定的緩解但仍有部分用戶反饋此問題,根據上面各項目分析結果得出:

  • 1 負載的兩臺服務器均已經達到處理的極限,需要配置更多的服務器來負載。
  • 2 mysql主庫的壓力明顯減少,但是從庫的壓力卻上去了,需要將現在的一主一從已從改為一主多從的模式。
  • 3 徹底解決這些問題,需要綜合考慮平臺的整體優化,如:業務優化(去掉業務中熱點)、增加緩存、部分頁面靜態化(可以使用雅虎和谷歌的前端優化規則,網上也有很多的測試網站可以評測)等等。

當時根據這些情況寫了一份優化的報告,見下文:


優化報告

1 背景

隨著公司業務不斷發展,業務量和用戶量的激增,官網pv也從最初的xxx-xxx到現在的xxx-xxxx,APP活躍用戶更是大幅增加;因此也對平臺目前的技術架構有了更大的挑戰。特別是近期平臺標源緊張的情況下,滿標的時間更是越來越短。服務器的壓力也越來越大;因此需要升級目前的系統架構,以支持更大的用戶量和業務量。

2 用戶訪問示意圖

userVisit.jpg

目前平臺有三款產品面對用戶,平臺官網、平臺APP、平臺小網頁;其中平臺官網和平臺APP的壓力比較大。

3 存在的問題

用戶搶標的時候問題集中在以下幾個方面
1、網頁或者APP打不開
2、網站或者APP打開慢
3、搶標過程中轉賬成功后,因為服務器負責壓力大更新失敗,再次退款
4、數據庫連接數用完,導致滿標后添加投資記錄失敗,回退標的進度

4、分析

通過對近期的服務器參數,并發量,以及系統日志等進行深入的分析,得出:
1、平臺官網、平臺APP搶標過程中服務器壓力巨大,其中平臺APP問題更加突出,搶標高峰期間單臺APP服務器apache最大連接數已經接近2600,接近apache最大的處理能力

2、數據庫服務器壓力巨大。數據庫壓力主要在兩個時期比較突出
1)當平臺做活動的時候,官網、小網頁、APP訪問量巨增,導致數據查詢量跟著巨增,當到達數據庫處理極限時,就會表現出網站打開慢等問題;
2)當用戶搶標的時候,用戶搶標的壓力又分為兩個階段:搶標前和搶標中。搶標前,因為滿標速度很快,用戶提前打開搶標頁面不斷刷新,這樣數據庫的查詢壓力會不斷增大,如果搶標的用戶量非常大,會導致在搶標之前將數據庫連接數用完;搶標中,單次購買大概會涉及15張左右表進行更改查詢,每個標的份額1000萬大概每次會有100-200人左右購買完成滿標,以中間值150人計算,在幾秒的時間內需要對數據更新2000-3000次(僅僅是更新,不包括查詢 ),產生大量并發,可能會導致更新失敗或者連接超時,從而影響到用戶投標和系統正常滿標。

5 解決方案

1、web服務器解決方案
單個用戶訪問web服務的示意圖

once1.png

目前網站和平臺APP均是采用了兩臺服務來做均衡負責,每臺服務器中安裝了apache來做服務端接受處理,每臺apache最大可以處理大約2000條連接。因此理論上目前網站或者APP可以處理大于4000個用戶請求。如果要支持同時1萬的請求,則需要5臺apache服務器來支持,因此目前缺少6臺web服務器。
升級服務器后的訪問示意圖
once2.png

2、數據庫解決方案
當前數據庫的部署方案
once3.png

1)主從分離解決主庫80%的查詢壓力。目前平臺官網、APP均連接mysql主庫導致主庫壓力倍增,把服務中的查詢全部遷移到從數據庫可以大量減輕主庫的壓力。

2)增加緩存服務器。當從庫查詢到達峰值的時候,也會影響主從的同步,從而影響交易,因此對用戶經常使用的查詢進行緩存以達到減少數據庫的請求壓力。需要新增三臺緩存服務器搭建redis集群。
once4.png

3、其它優化
1)官網首頁靜態化,從cnzz統計來分析,首頁占比網站的整體訪問量的15%左右,對于首頁不經常變動的數據通過靜態化來處理,提升官網打開的流暢度。

2)apache服務器的優化,開啟gzip壓縮,配置合理的鏈接數等

3) 去掉投資過程中的更新熱點:標的進度表。每次投標成功或者失敗都需要對標的進度表進行更新,多線程更新的時候就會出現樂觀鎖等問題。去掉過程中的更新,只在滿標后將標的進度信息保存在標的進度表,優化投資過程中對數據庫的壓力。

6 服務器升級方案

1、平臺最大的壓力來自于數據庫,需要將現在的一主一從,改為一主四從。官網/app/小網頁產生的大量查詢,由虛IP分發到三臺從庫,后臺管理查詢走另外的一個從庫。數據庫需要新增三臺服務器
數據庫升級后的示意圖
once5.png

2、增加緩存減少數據的壓力,需要新增兩臺大內存的緩存服務器
once6.png

3、需要新增三臺web服務器分解用戶訪問請求

app需要新增兩臺服務器
在搶標過程中app服務器壓力最大,需要新增兩臺服務器,配置完成后的示意圖
once7.png

官網需要新增一臺服務器
官網在搶標過程也有一定的壓力,需要新增一條服務器,完成后示意圖如下:
once8.png

總合計之后需要購置8臺服務器,其中有兩臺要求有大內存(64G以上)

公眾號回復“優化”,可下載完整版word優化報告

備注:所有優化方案投產后,問題解決,搶標無憂!


作者:純潔的微笑
出處:http://www.ityouknow.com/
版權歸作者所有,轉載請注明出處


作者:純潔的微笑?
出處:www.ityouknow.com?
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。?

本文如對您有幫助,還請多幫?【推薦】?下此文。?
如果喜歡我的文章,請關注我的公眾號

分類:?系統架構
標簽:?優化

本文轉自純潔的微笑博客博客園博客,原文鏈接:http://www.cnblogs.com/ityouknow/p/6369051.html,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259809.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql over rank_SQL學習筆記 - 窗口函數OVER

Window Function 窗口函數Perform calculations on an already generated result set ( a window).(在已生成的結果集上執行計算)Aggregate calculation(without having to group your data)(允許使用聚合函數時不用進行GROUP BY分組&#xf…

用boost庫實現traceroute小工具

參考了網上幾個 traceroute的實現版本,存在一些缺陷,比如沒有做超時處理,或者只能在window下使用。自己用boost實現了一個traceroute小工具,在window下正常運行。 先來看下面實現的原理。這些說明來自維基百科。traceroute&#x…

Win系統利用本地安全策略全面禁止360等軟件的安裝與運行-1

這個理論應該也可以用在域對下設域用戶上.各位不知道有沒有這種經歷,機子讓別人玩了一上午,回來發現,自己干干凈凈的系統多了一堆某某安全助手,某某殺毒,某某手機助手等等,最可恨的還是不知一系列的&#x…

php配置文件php.ini的詳細解析(續)

file_uploads On //是否允許文件上傳 upload_tmp_dir "d:/wamp/tmp" //上傳文件的臨時目錄,默認為“/wamp/tm…

服務器iis7.5 配置文件,使用注冊表項 - Internet Information Services | Microsoft Docs

Internet 信息服務使用的注冊表項的說明07/21/2020本文內容本文介紹了 Microsoft Internet Information Services (IIS) 在 Windows 上使用的注冊表項。原始產品版本: Internet information Services原始 KB 數: 954864簡介本文還包含有關如何修改注…

access考試素材_NCRE考試當天常見問題處理辦法及各科目注意事項大匯總

溫馨提醒為了方便大家在21-22號討論考試抽中的題目,請自覺加入QQ群:776167039考試當天常見問題及處理辦法大匯總問題一:考試當天忘記帶身份證和準考證原因:這種情況,要么是忘了,要么真沒有提前領到準考證。…

騰訊開源手游熱更新方案,Unity3D下的Lua編程

寫在前面\\xLua是Unity3D下Lua編程解決方案,自2016年初推廣以來,已經應用于十多款騰訊自研游戲,因其良好性能、易用性、擴展性而廣受好評。現在,騰訊已經將xLua開源到GitHub。\\2016年12月末,xLua剛剛實現新的突破&…

設置安全性根據Folder關聯的條目模板設置上傳文檔安全性

文章結束給大家來個程序員笑話:[M] 在XT上可以設預條目模板(EntryTemplate)來到達模板化制控上傳文檔安全性和屬性等信息的作用。而EntryTemplate本身可以與Folder相干聯(一個Folder可以關聯多個EntryTemplate)&#x…

surfaceView中的線程問題

問題描述我在surfaceView中的surfaceCreated方法中start線程,但是當我start一個其他activity后,又finish掉那個acvitity回來,又會走到這個surfaceCreated方法,這時候走到線程的start方法,它會報錯Thread already exist…

1加6投屏_6月1日起駕考要加項目?真相是這樣

來源:新聞晨報近日網上流傳一則消息讓還沒考出駕照的朋友們瑟瑟發抖網傳消息稱,上海、海南、陜西、貴州、浙江等地駕考科目二于6月1日起加項,因而“朋友們要抓緊時間報名,錄入舊系統”。網傳消息截圖上海6月1日起科目二考試增加到…

Java this關鍵字

this 關鍵字有三個應用:  1.this調用本類中的屬性,也就是類中的成員變量  2.this調用本類中的其他方法  3.this調用本類中的其他構造方法,調用時要放在構造方法的首行 來看下面這段代碼: public String name;public void sh…

linux下查看線程數的幾種方法

1、 cat /proc/${pid}/status 2、pstree -p ${pid} 3、top -p ${pid} 再按H 或者直接輸入 top -bH -d 3 -p ${pid} top -H手冊中說:-H : Threads toggle加上這個選項啟動top,top一行顯示一個線程。否則,它一行顯示一個進程。 4、ps xH手冊…

網站等保測評針對服務器,互聯互通測評知識分享之信息安全建設要點

原創 醫療測評實驗室 中國軟件評測中心 1周前醫院互聯互通測評,即國家醫療健康信息互聯互通標準化成熟度測評,近年來隨著政策的要求、需求的驅動、技術的更迭、價值的引領,越來越被業內人士接受和認可,測評熱度也水漲船高。國家衛…

樹櫻花滿樹繁花

廢話就不多說了,開始。。。 學院的櫻花開了,花開的很盛,滿樹的繁花揚張著天春的力活。 武漢三月的時候櫻花就開了,武大的學同在空間里發各種玩游的照片,真是羨煞旁人。大連的天春來得晚,但究終還是趕上了。…

pandas合并groupby_pandas實踐之GroupBy()

官網地址:https://pandas.pydata.org/docs/reference/groupby.htmlpandas中對數據進行分組操作的方法,官方有很詳細的教程。下面的案例是真實遇到的問題,看一看用pandas是如何解決的。構造數據import pandas as pdimport numpy as npdf pd.D…

自學 web 前端人怎么找工作?

1,你做過的項目可以體現你的價值。2,你的個人博客可以反映你的思考。3,你的GitHub頁面可以展示你的項目。4,你項目中的代碼可以看出你編程的風格。1,2,3,4之間有交集。當你能證明,你…

《Breakfast At Tiffanys》

"生活中似乎有些男性想象著能拯救和引導一個年輕美麗純潔善良卻迷茫的女子,有些女性也想象著能用自己的善良與包容來安慰一個才華橫溢卻飽經苦悶與貧窮的男子,老實說,這很有成就感。雖然我的語氣有些諷刺,但我相信在這些“光…

項目不需要SVN控制的時候,該怎么辦

今天要用一個項目,當項目不需要SVN控制的時候,我們一般怎么辦哪?可能很多人設置Windows顯示隱藏文件,然后將項目中的所有.svn文件刪除。下面,從網上找了個非常簡單的方法第一步:建立一個名字叫做remove-svn…

erdas遙感圖像幾何校正_定量/高光譜遙感之—光譜分析技術

文章轉載自微信公眾號CSDN,作者冰清-小魔魚,版權歸原作者及刊載媒體所有。在定量遙感或者高光譜遙感中,信息提取主要用到光譜/波譜分析技術。本專題對光譜/波譜分析中涉及的流程及一些技術進行講解,包括以下內容:基本概…

Zipkin-1.19.0學習系列1:java范例

2019獨角獸企業重金招聘Python工程師標準>>> 官網地址: https://github.com/openzipkin/zipkin http://zipkin.io/ https://www.oschina.net/p/zipkin 截止到2017/1/4為止,最新版本為: Zipkin 1.19 下載地址: https://github.com/openzipkin/zipkin/arc…