WEB系统问题排查

一般问题出现,首先最重要的是定位问题的影响范围。以制定不同的解决方案。

流程

  • 首先:估计错误影响范围

当问题出现,第一反应是估计影响范围。如当有用户反馈页面白屏,打不开时。需第一时间确认影响范围。具体操作流程如下:

  1. 页面pv数据,接口调用数据或者其他可以判断影响范围的数据有没有出现断崖式的下跌
  2. 根据是否断崖下跌制定不同的方案

pass: 当出现断崖下跌,整个服务不可用时,启动紧急方案,如切换到临时页面(404或其他页面)。否则,查找问题,紧急排错

  • 然后:查看服务器各种指标

当问题是局部发生的时候。则需进行排查。首先查看服务器各个集群的状态:

  1. linux服务器的运行情况(机房断电,断网),负载(cpu,内存,硬盘等),网络(网络是否阻塞或断网)

  2. 各支撑集群的状态,MySQL集群机器的状态(是否有实例断开、当机,负载过高,主从延迟的情况),redis集群(redis各个机器的运行情况,是否有redis崩溃等),或者其他支撑服务的运行状态(memcache,elasticsearch,mongo等)

  • 其次:排查日志

日志的排查不能是漫无目的的,需要根据问题的情况及对业务的了解,先后的去排查可能相关的日志。

  1. PHP错误日志

  2. apache日志

  3. nginx日志

  4. mysql的慢查询日志

  • 最后

问题一般在如上的流程中都能定位出来。如果定位不出来:

==让自己冷静下来,停下来一分钟,想一想问题,千万不要慌乱,并在没有思路的情况下操作,避免二次事故==

试试以下方案:

1、根据异常的状态进行合理的推断和定位问题(一般靠经验和对业务的熟悉程度),
具体的操作一般也是依据如上的流程

2、联系最近的系统操作进行判断(如机器切换,版本升级,代码发布,网络切换),来定位问题

pass: 一般的线上问题排查,如果是简单的问题,直接可以定位到的,则不需要如上的流程。

  • 解决问题

当影响范围或这错误已经找到或者没找到的情况下。需要在最短的时间内恢复系统(不一定是100%恢复,但要保持基本可用),如:

  1. 整站崩溃,要紧急切换到备用的404页面

  2. 局部功能导致的系统异常,可直接下掉该功能,保持基本功能异常

如等级系统异常导致的整站异常,则可下掉等级系统,所有用户等级全部默认1级,以保持系统基本功能可用

问题解决的时间决定了当前的处理方案的不同。需根据业务进行讨论。如时间长,则需要怎么解决用户访问,用户应该看什么,需要根据自己的业务进行讨论。 时间短,在这么短的时间内用户应该看什么,也是一样的道理

  • 延伸

从上面的处理过程会得到一个提醒:

==线上系统的备用方案非常重要,系统需要有演戏,有紧急情况下的备用方案==

工具推荐

上面的排查过程,需要在一系列工具的配合下才能准确,快速的定位问题,以下列一下可能需要用的工具。

==linux命令是最好用的工具==

pass: 以下工具是以服务是以多台机器(服务集群)的情况下推荐使用的,如果是单机或者2,3太机器,则直接使用linux的命令行工具即可。

  • 访问情况分析

业务的访问情况分析,如pv,可以用百度统计等第三方统计平台(对于上述的情况,这种第三方统计平台是足够使用的)。

接口的访问情况,可能看起来比较麻烦。一般接口的访问情况,可以根据入口服务器(如nginx或apache)的访问日志来做一个简单的估计和查看。但是如果是分布式的机器的情况下,就比较麻烦。建议搭建ELK日志平台,通过对日志的聚合统计就可以做到接口访问情况的分析。

  • 运维工具

zabbix:是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。可以监控到各种服务器信息。

当然目前运维届有各种监控工具,如单独监控mysql集群的工具,redis的集群监控工具等都是可以用的。各个公司需要根据自己的情况,选用不同的工具。毕竟如果只需要监控mysql,那用zabbix就太重了。

目的是一致的:快速,简便的看到服务的运行信息,并具有报警功能

  • 日志工具

业界目前比较流行的有ELK Stack。用于一站式的日志采集,存储,查看和分析。可以集中,方便的观察到各台服务器的日志情况,又不需要每个人都开通线上机器的权限,也方便日志的查询和搜索

扩展

在一般情况下(业务系统较简单,机器不多)。linux的命令是最方便快捷的方法。配合shell的sed或awt语法,可以做很多事情。

下面列一下一些常用的命令或工具:

一、web工具
1、xdebug、xhprof;
2、PHP慢日志;
3、查看php-fpm、httpd进程数,必要时使用strace、lsof。

二、Mysql工具
1、mysqlsla:配合mysql的全日志,在测试环境中,可以准确地分析每个流程执行sql语句,排查索引、业务逻辑等问题;
2、mk-query-digest+tcpdump:实时监测数据库端口(比如3306),截取正在sql语句。

三、linux自带的命令
1、top:这个基本可以看出资源使用情况,可第一步先判定问题是“CPU密集型”或者“IO密集型”;
2、iostat:分析磁盘IO
3、vmstat:可分析内存的使用情况

四、各类日志帮助分析问题
1、web日志:很多问题可以在错误日志中找到提示,非常有用
2、mysql日志:mysql的错误日志、慢日志
3、php慢日志:也有一定的帮助,我碰到较多的是连接DB的时候慢了,慢日志不用时必须关闭

``
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容