亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

線上系統(tǒng)性問(wèn)題定位與方法論

leonardofed / 2619人閱讀

摘要:很顯然對(duì)于不同規(guī)模,不同功能的系統(tǒng),這個(gè)問(wèn)題無(wú)法一概而論。生產(chǎn)事件上報(bào)客服上報(bào)此類(lèi)問(wèn)題往往來(lái)自用戶投訴,最重要的就是問(wèn)題現(xiàn)象的復(fù)現(xiàn)。線上問(wèn)題處理的核心是快速修復(fù)。以上說(shuō)的都是問(wèn)題發(fā)生后的消極應(yīng)對(duì)措施。

前言

一線程序員在工作中經(jīng)常需要處理線上的問(wèn)題或者故障,但工作幾年下來(lái)發(fā)現(xiàn),有些同事其實(shí)并不知道該如何去分析和解決這些問(wèn)題,毫無(wú)章法的猜測(cè)和嘗試,雖然在很多時(shí)候可以最終解決問(wèn)題,但往往也會(huì)浪費(fèi)大量的時(shí)間,時(shí)間就是金錢(qián),對(duì)線上系統(tǒng)而言甚至是生命。

本文講什么:本文嘗試將本人工作過(guò)程中對(duì)線上問(wèn)題的處理經(jīng)驗(yàn)加以總結(jié)精煉,并給出一套相對(duì)有規(guī)律的問(wèn)題定位處理模式,希望能夠在排查問(wèn)題的過(guò)程中可以幫助大家節(jié)省一些時(shí)間,盡快找出問(wèn)題的關(guān)鍵點(diǎn)并修復(fù)。

本文不講什么:1、這不是一篇Linux命令的教程,雖然文章里會(huì)提到一些命令,但只會(huì)簡(jiǎn)單介紹他們的作用和應(yīng)用場(chǎng)景,詳細(xì)使用說(shuō)明請(qǐng)大家自行g(shù)oogle。2、本文不打算為所有問(wèn)題尋找解決方案,事實(shí)上下面列出的方法只對(duì)大部分Java編寫(xiě)的web系統(tǒng)比較有意義,一些特別個(gè)性化的案例也不再討論范圍之內(nèi)。

了解你的系統(tǒng)

什么樣的現(xiàn)象應(yīng)該列為“系統(tǒng)問(wèn)題”?某個(gè)服務(wù)的QPS達(dá)到1000?對(duì)于一般系統(tǒng)或許算是,但是對(duì)大型電商網(wǎng)站,或許這只是常態(tài)。

很顯然對(duì)于不同規(guī)模,不同功能的系統(tǒng),這個(gè)問(wèn)題無(wú)法一概而論。因此快速發(fā)現(xiàn)問(wèn)題的前提是深入了解你的系統(tǒng)。

通常情況下,我們可以把系統(tǒng)簡(jiǎn)單的劃分為下面三個(gè)層次:

系統(tǒng)層

也就是我們的部署軟硬件環(huán)境。通常包含CPU、磁盤(pán)、內(nèi)存、網(wǎng)絡(luò)IO等。我們的系統(tǒng)是分布式的,還是單機(jī)應(yīng)用?CPU是幾核的?物理機(jī)還是虛機(jī)??jī)?nèi)存、磁盤(pán)是多大?網(wǎng)卡的規(guī)格?

軟件層

也是我們部署的軟件環(huán)境。負(fù)載均衡服務(wù)器?JDK版本?web服務(wù)器(Tomcat等)以及JVM參數(shù)設(shè)置?數(shù)據(jù)庫(kù)、緩存使用的是哪種產(chǎn)品?

應(yīng)用層

也就是我們的系統(tǒng)本身。關(guān)鍵接口的平均響應(yīng)時(shí)間(RT)是多少?服務(wù)的QPS是多少?某個(gè)接口的并發(fā)數(shù)能承受多少?

以上這些問(wèn)題你是否能回答出來(lái)?這些問(wèn)題的了解多寡,決定了你對(duì)系統(tǒng)的熟悉程度,也在很大程度上決定了你能否及時(shí)的發(fā)現(xiàn)問(wèn)題,甚至在其真正造成影響之前就將問(wèn)題解決。

現(xiàn)在你或許能回答:某個(gè)服務(wù)的QPS達(dá)到1000,究竟算不算是線上問(wèn)題。

評(píng)估問(wèn)題影響范圍

一個(gè)問(wèn)題究竟影響了多大范圍的用戶?在多大程度上影響用戶的正常使用?如果是集群系統(tǒng),那么這個(gè)問(wèn)題是全局性的還是只在單臺(tái)機(jī)器上出現(xiàn)?不同的問(wèn)題范圍會(huì)直接影響到問(wèn)題處理的優(yōu)先級(jí),一些極端情況下的個(gè)案,甚至可以不急于處理(至少不用過(guò)于焦慮)。

問(wèn)題信息的搜集來(lái)源,有如下途徑:

系統(tǒng)、業(yè)務(wù)監(jiān)控報(bào)警

一般稍微上規(guī)模的公司,都會(huì)有配套的監(jiān)控系統(tǒng),通常監(jiān)控系統(tǒng)報(bào)警都意味著問(wèn)題已經(jīng)影響到系統(tǒng)的正常運(yùn)行了,此時(shí)屬于比較嚴(yán)重的生成事故,需要第一時(shí)間處理。此類(lèi)問(wèn)題由于可以重現(xiàn),因此比較容易排查。?

關(guān)聯(lián)系統(tǒng)故障追溯

關(guān)聯(lián)系統(tǒng)發(fā)現(xiàn)問(wèn)題,通過(guò)追溯發(fā)現(xiàn)是由本系統(tǒng)的問(wèn)題引發(fā)的,此時(shí)問(wèn)題的觸發(fā)的往往已經(jīng)比較明確,需要根據(jù)關(guān)聯(lián)系統(tǒng)的故障程度決定問(wèn)題處理的優(yōu)先級(jí)。但此類(lèi)問(wèn)題很容易牽扯出隱藏的其他問(wèn)題(如系統(tǒng)改造時(shí)溝通不善造成的適配問(wèn)題等),緊急修復(fù)后還需要進(jìn)行進(jìn)一步仔細(xì)排查。

生產(chǎn)事件上報(bào)(客服上報(bào))

此類(lèi)問(wèn)題往往來(lái)自用戶投訴,最重要的就是問(wèn)題現(xiàn)象的復(fù)現(xiàn)。

主動(dòng)發(fā)現(xiàn)

通過(guò)線上監(jiān)控,或者日志,主動(dòng)發(fā)現(xiàn)線上系異常的情況。需要確認(rèn)是否是問(wèn)題,可能只是偶發(fā)性的系統(tǒng)抖動(dòng)。

快速恢復(fù)

說(shuō)回問(wèn)題本身,一旦確定是系統(tǒng)bug,該如何處理?立即去檢查代碼?且不說(shuō)線上bug往往不那么容易檢查出來(lái),及時(shí)能夠快速定位,修復(fù)又會(huì)耗費(fèi)大量時(shí)間,這期間不知有多少用戶受到影響。

線上問(wèn)題處理的核心是快速修復(fù)。有以下兩類(lèi)處理方案:

1.無(wú)法快速定位到問(wèn)題根源

回滾:當(dāng)最近有新版本上線時(shí),多半推薦這種方案

重啟:CPU高,或者連接數(shù)飆升時(shí),會(huì)采取這種方法

擴(kuò)容:線上訪問(wèn)壓力大,重啟也無(wú)法解決時(shí)

2.可以定位到問(wèn)題點(diǎn)的

臨時(shí)方案或者功能降級(jí)

無(wú)論哪種方式,目標(biāo)都是以最快速度恢復(fù)服務(wù)。但這種方式是臨時(shí)的,為了徹底解決問(wèn)題,都需要保留事故現(xiàn)場(chǎng)?;痉绞饺缦拢?/p>

執(zhí)行top命令,若CPU空閑程度較低:shift+p按CPU使用率倒排,記錄最耗資源的進(jìn)程信息。

執(zhí)行free –m命令,若內(nèi)存使用量高:執(zhí)行top,shift+m按內(nèi)存使用率倒排,記錄最耗資源的進(jìn)程信息。

對(duì)嫌疑進(jìn)程執(zhí)行ps xuf | grep java,打印進(jìn)程詳細(xì)信息并記錄。

使用jstack >jstack.log收集線程信息(反復(fù)多取幾次)。

使用jstat–gcutil 查看Old區(qū)占用率,對(duì)接近100%的進(jìn)程執(zhí)行jmap > jmap.log保留內(nèi)存信息。

定位與修復(fù)

下圖展示了常規(guī)情況下我們系統(tǒng)故障的原因:

圖1-系統(tǒng)故障原因

?

由此可見(jiàn),多數(shù)情況下,系統(tǒng)的故障都會(huì)反映為系統(tǒng)的一項(xiàng)或者多項(xiàng)指標(biāo)異常。如最初所說(shuō),我們可以將整個(gè)系統(tǒng)抽象成為幾個(gè)模塊,那么對(duì)應(yīng)的,每個(gè)模塊也有一些工具供我們進(jìn)行問(wèn)題的分析與定位。

?

圖2-Linux常用工具集

以下是常見(jiàn)的問(wèn)題排查工具箱:

CPU:top –Hp

系統(tǒng)內(nèi)存:free –m

IO:iostat

磁盤(pán):df –h

網(wǎng)絡(luò)鏈接:netstat

gc:jstat –gcutil

線程:jstack

Java內(nèi)存:jmap

輔助工具:MAT,btrace,jprofile

具體的使用方法不再贅述

方法論

有了基本的系統(tǒng)模塊劃分,以及每個(gè)模塊對(duì)應(yīng)的分析工具,我們可以嘗試將問(wèn)題的排查抽象成一個(gè)相對(duì)固定的流程。大致的思路是:

先逐個(gè)模塊排查,確認(rèn)問(wèn)題現(xiàn)象

再根據(jù)問(wèn)題現(xiàn)象,定位問(wèn)題進(jìn)程

進(jìn)一步分析線程以及內(nèi)存情況

最終找到問(wèn)題的觸發(fā)點(diǎn)。

基本流程如下圖所示:

圖3-逐步排查,鎖定問(wèn)題進(jìn)程

?

圖4-詳細(xì)分析目標(biāo)進(jìn)程

為故障與失敗做設(shè)計(jì)

隨著系統(tǒng)規(guī)模的逐漸擴(kuò)大,更多的功能被引入,更多的代碼被添加進(jìn)來(lái),從這個(gè)角度來(lái)看線上的問(wèn)題幾乎是無(wú)可避免的。以上說(shuō)的都是問(wèn)題發(fā)生后的消極應(yīng)對(duì)措施。事實(shí)上,無(wú)論我們的設(shè)計(jì)多么的完善,故障仍然是無(wú)法避免的。而且大多數(shù)時(shí)候,失敗、故障都會(huì)從一個(gè)我們無(wú)法預(yù)期的角度發(fā)生,令人猝不及防。

因此在系統(tǒng)架構(gòu)時(shí)需要設(shè)計(jì)一種機(jī)制,使得失敗、故障發(fā)生時(shí)能將系統(tǒng)的損失降到較低,在故障發(fā)生時(shí)盡可能維持核心功能的可用性。

1.設(shè)置合理的超時(shí)機(jī)制

處理網(wǎng)絡(luò)上第三方依賴時(shí),需要對(duì)接口的響應(yīng)時(shí)間有一個(gè)合理預(yù)期,當(dāng)請(qǐng)求超時(shí)時(shí)能夠主動(dòng)斷開(kāi)連接,避免請(qǐng)求堆積。

本地服務(wù)相互調(diào)用時(shí)也需要合理的設(shè)置超時(shí)時(shí)間。

2.服務(wù)降級(jí)

對(duì)于無(wú)法正常響應(yīng)的應(yīng)用程序應(yīng)對(duì)可以自動(dòng)切換到較低版本的實(shí)現(xiàn)。

對(duì)于一些次重要級(jí)的接口,可以考慮返回一個(gè)系統(tǒng)默認(rèn)值。

3.主動(dòng)拋棄

對(duì)于響應(yīng)過(guò)慢的第三方接口,如果非核心調(diào)用,也可以采取直接拋棄的方式。

無(wú)論是降級(jí)或者拋棄,系統(tǒng)都應(yīng)當(dāng)具備適當(dāng)?shù)闹卦嚈C(jī)制,使得依賴在回復(fù)之后可以自動(dòng)恢復(fù)正常調(diào)用。

作者簡(jiǎn)介

孫思,轉(zhuǎn)轉(zhuǎn)交易系統(tǒng)負(fù)責(zé)人,08年北航計(jì)算機(jī)系虛擬現(xiàn)實(shí)實(shí)驗(yàn)室研究生畢業(yè)。畢業(yè)后入職中國(guó)民航信息網(wǎng)絡(luò)股份有限公司(TravelSky),負(fù)責(zé)機(jī)票發(fā)布平臺(tái)(EasyFare)的研發(fā)和維護(hù)工作。2010年進(jìn)入互聯(lián)網(wǎng)行業(yè),先后供職于網(wǎng)易(北京)、搜狐和去哪兒網(wǎng),參與過(guò)網(wǎng)易電商基礎(chǔ)平臺(tái)建設(shè),活動(dòng)及促銷(xiāo)運(yùn)營(yíng)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn);搜狐新聞客戶端的開(kāi)發(fā)、重構(gòu),以及去哪兒網(wǎng)旗下當(dāng)?shù)厝水a(chǎn)品的交易、支付系統(tǒng)的升級(jí)改造。2016年04月加入轉(zhuǎn)轉(zhuǎn)公司,擔(dān)任中臺(tái)技術(shù)部交易系統(tǒng)負(fù)責(zé)人,整體負(fù)責(zé)轉(zhuǎn)轉(zhuǎn)的交易系統(tǒng)、支付中心以及活動(dòng)促銷(xiāo)運(yùn)營(yíng)等系統(tǒng)的研發(fā)工作。對(duì)大規(guī)模電商平臺(tái)、分布式系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)有較深入的了解。

歡迎加入本站公開(kāi)興趣群

軟件開(kāi)發(fā)技術(shù)群

興趣范圍包括:Java,C/C++,Python,PHP,Ruby,shell等各種語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)交流,各種框架使用,外包項(xiàng)目機(jī)會(huì),學(xué)習(xí)、培訓(xùn)、跳槽等交流

QQ群:26931708

Hadoop源代碼研究群

興趣范圍包括:Hadoop源代碼解讀,改進(jìn),優(yōu)化,分布式系統(tǒng)場(chǎng)景定制,與Hadoop有關(guān)的各種開(kāi)源項(xiàng)目,總之就是玩轉(zhuǎn)Hadoop

QQ群:288410967?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/3963.html

相關(guān)文章

  • 一步一步搭建前端監(jiān)控系統(tǒng):如何定位前端線上問(wèn)題?

    摘要:一直以來(lái),前端的線上問(wèn)題很難定位,因?yàn)樗l(fā)生于用戶的一系列操作之后。當(dāng)然,這些問(wèn)題并非不能克服,讓我們來(lái)一起看看如何去定位線上的問(wèn)題吧。地址參考一步一步搭建前端監(jiān)控系統(tǒng)錯(cuò)誤監(jiān)控篇一步一步搭建前端監(jiān)控系統(tǒng)接口請(qǐng)求異常監(jiān)控篇 摘要: 記錄用戶行為,排查線上BUG。 作者:一步一個(gè)腳印一個(gè)坑 原文:如何定位前端線上問(wèn)題(如何排查前端生產(chǎn)問(wèn)題) Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所...

    aaron 評(píng)論0 收藏0
  • 一步一步搭建前端監(jiān)控系統(tǒng):JS錯(cuò)誤監(jiān)控篇

    摘要:摘要徒手寫(xiě)錯(cuò)誤監(jiān)控。為什么用定時(shí)器呢,因?yàn)樵趩雾?yè)應(yīng)用中,路由的切換和地址欄的變化是無(wú)法被監(jiān)控的,我確實(shí)沒(méi)有想到特別好的辦法來(lái)監(jiān)控,所以用了這種方式,如果有人有更好的辦法,請(qǐng)給我留言,謝謝。 摘要: 徒手寫(xiě)JS錯(cuò)誤監(jiān)控。 作者:一步一個(gè)腳印一個(gè)坑 原文:搭建前端監(jiān)控系統(tǒng)(二)JS錯(cuò)誤監(jiān)控篇 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 背景:市面上的監(jiān)控系統(tǒng)有很多,大多收費(fèi),對(duì)于...

    EdwardUp 評(píng)論0 收藏0
  • 記一次 android 線上 oom 問(wèn)題

    摘要:?jiǎn)栴}分析隨著回滾版本的放量,主端崩潰逐漸回歸正常,進(jìn)一步坐實(shí)了新版本存在問(wèn)題。內(nèi)容非常多但都是重復(fù)的,看起來(lái)進(jìn)程沒(méi)有啟動(dòng),導(dǎo)致連接端一直在進(jìn)行重連。背景公司的主打產(chǎn)品是一款跨平臺(tái)的 App,我的部門(mén)負(fù)責(zé)為它提供底層的 sdk 用于數(shù)據(jù)傳輸,我負(fù)責(zé)的是 Adnroid 端的 sdk 開(kāi)發(fā)。sdk 并不直接加載在 App 主進(jìn)程,而是隔離在一個(gè)多帶帶進(jìn)程中,然后兩個(gè)進(jìn)程通過(guò) tcp 連接進(jìn)行通信...

    番茄西紅柿 評(píng)論0 收藏2637
  • 一步一步搭建前端監(jiān)控系統(tǒng):如何記錄用戶行為?

    摘要:摘要通過(guò)記錄用戶行為,快速?gòu)?fù)現(xiàn)場(chǎng)景。這是搭建前端監(jiān)控系統(tǒng)的第二章,主要是介紹如何統(tǒng)計(jì)報(bào)錯(cuò),跟著我一步步做,你也能搭建出一個(gè)屬于自己的前端監(jiān)控系統(tǒng)。 摘要: 通過(guò)記錄用戶行為,快速?gòu)?fù)現(xiàn)BUG場(chǎng)景。 作者:一步一個(gè)腳印一個(gè)坑 原文:搭建前端監(jiān)控系統(tǒng)(備選)用戶行為統(tǒng)計(jì)和監(jiān)控篇(如何快速定位線上問(wèn)題) Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 一步一步搭建前端監(jiān)控系統(tǒng)系列博客: ...

    tolerious 評(píng)論0 收藏0
  • 智能支付穩(wěn)定性測(cè)試實(shí)戰(zhàn)

    摘要:主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹在穩(wěn)定性測(cè)試中的一些方法與實(shí)踐。其中,智能支付作為新擴(kuò)展的業(yè)務(wù)場(chǎng)景,去年也成為了美團(tuán)增速最快的業(yè)務(wù)之一。 本文根據(jù)美團(tuán)高級(jí)測(cè)試開(kāi)發(fā)工程師勛偉在美團(tuán)第43期技術(shù)沙龍美團(tuán)金融千萬(wàn)級(jí)交易系統(tǒng)質(zhì)量保障之路的演講整理而成。主要介紹了美團(tuán)智能支付業(yè)務(wù)在穩(wěn)定性方向遇到的挑戰(zhàn),并重點(diǎn)介紹QA在穩(wěn)定性測(cè)試中的一些方法與實(shí)踐。 背景 美團(tuán)支付承載...

    The question 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<