文档章节

运维神器-分分钟定位500错误!   

O
 OneAPM1
发布于 2015/05/12 22:21
字数 1786
阅读 194
收藏 6

做过运维的小伙伴都知道,当用户浏览器上出现白屏、应用端API得到500错误、取到数据为空是非常崩溃的一件事情。500错误是服务器端非常常见的一个错误,有可能是开发时导致的语法错误,也有可能是文件引用导致的错误。当用户反馈了 500 错误之后,而我们运维童鞋们面对一个集群的后端服务器,如果没有方便的工具管理和同步,下手查找问题,是一个即耗时又费力的痛苦过程。 在最开始的时候,每次遇到这种情况,我们运维同学们就分别登录几台Web服务器,去查找可能记录错误日志的地方,找出错误的真凶,以让开发童鞋们来改进。 如下图这个错误,就是由于在引用微信JS-SDK开发时,由于每个页面都要做JS-SDK权限授权,但是在其中一个页面忘记了导入微信的JS-SDK 包,导致了大量的 500错误。这种找错误的过程,最开始几台机器还勉强,几分钟能找到,到了后来变成了几十台,已经变成了一项谁也不想干的工作了。

图一、从日志中寻找出现 500 错误的真凶 后来公司的负载均衡服务器Haproxy 做了会话保持,我们就只好联系用户,让部分懂点技术的用户,帮我们用Chrome 这类开发者工具,抓一下包,看看Cookie,从Cookie 的SERVERID 字段就能知道,这个用户的访问,可能来自自于哪台机器,这样定位起来,方便了很多,但是时间也往往要10分钟以上,因为还要跟用户电话,大部分用户并不懂得如何操作。如下图二,从正常请求,可以得到此时访问的 SERVERID,就可以知道出错的页面和日志,也会在这台机器上。 图2,通过SERVERID确定服务器 那有没有什么更快的办法呢?有倒时有,比如自己开发一套系统,从各台服务器收集日志,在有一个集中的地方,能查看。但是我们运维童鞋开发能力还不太能跟得上,公司的开发童鞋老板也恨不得拉来 7x16小时开发产品。

那到底还有木有什么更好的办法啊?

在圈子里有人推荐OneAPM!其实最开始我是拒绝的,因为一般来讲,装这种在生产环境上,比较麻烦,并且可能会影响性能,还都需要埋代码。真到有一天,微博上又有人在讨论OneAPM,我有点心动了。

于是乎,对于懂点开发、喜欢鼓捣新玩意的非典型运维工程师,三下五除二从OneAPM注册了账号,下载了安装包,安装到了我们的测试服务器上。好家伙,我还啥也没有干,把程序刚刚跑起来,在OneAPM 的管理控制台上就看到了数据,真是福音啊,不要埋代码,真的不要埋代码!!!

DUANG — 简直就是有特技!经过几天的实验,并向领导申请在生产环境上安装,领导看到了是优才网伍老师推荐,正好是认识的熟人,所以特意微信沟通了一下,知道是靠谱的。就让我让装到生产环境上去了。 在实际的使用过程中,OneAPM 确实也帮了我们的大忙。使用了几个月了,觉得真的是减轻了我们运维童鞋工作,同时也非常快速地定位问题,开发童鞋们也很感激。下面就举一个真实环境中的栗子。

下面就是我从线上摘出来的典型的例子。线上出了问题,一分钟后,在OneAPM 的管理后台就看到了错误消息。如图三

还以上边的WxJSSDK 没有找到为例,线上出问题时,使用浏览器抓包,得到的是如下结果,因为线上是关闭了日志输出的,只看到白白的一片,抓包则是 500 错误。

现在不用一台台上去检测了,一分钟后,OneAPM 后台就收到了错误信息报告。点击去看如下:

错误信息报告表明,这是一个非常严重的PHP错误,就是在做微信开发时,要引用微信官方的SDK,开发童鞋给漏掉了,导致出现了找不到类 ’WxJSSDK’ 这样的错误,Nginx 接到这样的错误,会向客户端返回 500。 我直接把OneAPM错误信息报告发给开发童鞋,开发童鞋心领神会,再也不会跟我纠缠说谁谁的问题了! 开发童鞋还告诉了我修复的办法:引入文件就好了,特意找到了这段代码参考下图。

有了OneAPM就是这么爽,我也不用再用终端爬到每台机器上去确认,更不用担心随着公司的业务发展,加到多少台Web和API服务器。

我需要拥有的,就是一个OneAPM 的管理后台!

每次公司内部的技术分享,我都会从OneAPM拉出一些案例,也会提供给开发主管一些素材,总结程序员可能常犯的错误,为此,受到了老板的奖励!至于啥奖励,大家懂的。平时参加一些业内的技术交流,也会向他们推荐OneAPM,已经成为了OneAPM的忠粉,他们团队里做支持的孟智童鞋还和我成为了好朋友!

OneAPM 的服务是很有特色的,可能这种服务还在早期,国内好像还没有类似的应用,所以在后台和功能上,也有一些不足之处,趁这个机会也吐个槽,希望能受到开发团队的关注 ,并改进。 第一、 由于我经常用,所以OneAPM账号长期处于登录状态,但是每次敲入OneAPM.com 都进到了首页,搞技术的都懂啊,你们的产品经理莫非是临时工?

第二、最需要改进的,就是看错误日志的面板,搜索、错误分级都还没有做好。幸好我用熟悉了,否则新用户会很晕的,欲知详情,请看下图。

第三、 如果做了错误分级,我最想要的就是报警了,就像DNSPod ,每一次域名出故障,连不上,都短信、微信、邮件就来了,听说你们拿了7000万啊,在出严重错误的时候,能不能给我来个短信啊,我就不用每天挂着这个后台了,有木有!等到这些有了,即时将来有可能收费,我也会积极向领导争取滴!


本文作者系OneAPM发布 ,想阅读更多好的技术文章,请访问OneAPM官方技术博客。

© 著作权归作者所有

共有 人打赏支持
O
粉丝 1
博文 11
码字总数 22914
作品 0
东城
私信 提问
Redash 1.0.1 发布,开源数据图表工具

Redash 1.0.1 发布了,主要更新内容: 新增:气泡图支持。 将“刷新模式”按钮添加到数据源 [Data Sources]新增: ATSD query runner [Data Sources]新增: SalesForce query runner 新增:如...

王练
2017/04/04
2.6K
1
小白学爬虫-批量部署Splash负载集群

部署公司生产环境的Splash集群无奈节点太多 差点被搞死·· 还好我有运维神器Ansible,一次编撰终生可用啊!而且这玩意儿 等幂特性 扩容回滚 So Easy!! 闲话少说开搞! 安装Ansible: 看官...

哎哟卧槽
2017/12/02
0
0
电话告警免费体验啦~~

如果你是一名运维攻城师,值班、加班、没假期是不是已经变成生活常态,就连吃饭、睡觉、洗澡、上厕所也会思考同一个问题吧-我的网站在正常运转吗?! 就算有全网第一监控神器【监控宝】在手,...

cloudwiseAPM
2015/08/04
1K
8
详解 Linux 下的用户管理、用户组管理和权限管理

最近和几个朋友开发项目,期间使用了一台服务器跑模型,这台服务器是多人公用的,很多人都在上面有自己的账号,互不干涉内政,一切看起来十分井然有序。近期,这个服务器上刚挂载了一块新硬盘...

崔庆才
2018/09/04
0
0
提升网站访问速度的 SQL 查询优化技巧

原文出处:Delicious Brains 译文出处:开源中国 你一定知道,一个快速访问的网站能让用户喜欢,可以帮助网站从Google 上提高排名,可以帮助网站增加转化率。如果你看过网站性能优化方面的文...

Delicious Brains
2017/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day11

architect刘源源
今天
6
0
论学好Linux系统的超级重要性

不知道各位在日常的工作生活中有没有接触过“rm -rf /*”这个命令,因为这个命令搞出来的事情可还不少呢!前段时间就在一个群里看到了有个小伙子,老板让他去维护一下服务器,这小伙也不太懂...

Linux就该这么学
昨天
6
0
git 使用

1,首先在github配置好信息和仓库,然后在本地进行操作 git init git config user.name 'zhangwuer' git config user.email '56789053@qq.com' 2,与远程分支建立连接 git checkout -b test......

天王盖地虎626
昨天
3
0
git checkout 命令详解

在日常的git操作中,git checkout——检出,是我们的常用命令。最为常用的两种情形是创建分支和切换分支。 在下面的命令中,使用了一些简写,在这里说明一下: git st # git statusgit ci ...

shzwork
昨天
10
0
【Nginx】Nginx多级代理,获取客户端真实请求IP以及每级代理IP

Nginx多级代理,获取客户端真实请求IP以及每级代理IP 如图所示,每一级nginx里的location配置里需要加上对应的配置,最后一级nginx是直接到应用,测试时为了方便,直接用echo模块去测试,打印...

薛定谔的旺
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部