定位500错误!

定位500错误!

做过运维的小伙伴都知道,当用户浏览器上出现白屏、应用端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官方技术博客。

标签: 运维应用

时间: 2024-10-04 23:24:56

定位500错误!的相关文章

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

做过运维的小伙伴都知道,当用户浏览器上出现白屏.应用端API得到500错误.取到数据为空是非常崩溃的一件事情.500错误是服务器端非常常见的一个错误,有可能是开发时导致的语法错误,也有可能是文件引用导致的错误.当用户反馈了 500 错误之后,而我们运维童鞋们面对一个集群的后端服务器,如果没有方便的工具管理和同步,下手查找问题,是一个即耗时又费力的痛苦过程. 在最开始的时候,每次遇到这种情况,我们运维同学们就分别登录几台Web服务器,去查找可能记录错误日志的地方,找出错误的真凶,以让开发童鞋们来改

IIS新类型文件500错误

时间过得太久,就真的会忘掉.在这里记录一下吧. 不得已重新安装系统,然后以前的配置都忘掉了.对新类型的文件.geojson 文件报错. 500错误. 首先反复调试MIME类型是否有问题, 再看映射是否有问题. 再把错误信息发到浏览器上. 最后定位在响应缓冲限制上.

zabbix 服务器500错误,解决故障。

ZABBIX 500错误,查看apache错误日志,index.php 32 line.写着语法错误!!! 到路径下打开/var/www/html/zabbix/index.php文件,定位32行,可以看到数组定义用了中括号'[]'写法,查手册得知PHP 5.4版本开始支持中括号 [],跟大括号(). 输入php -v 查看php版本 PHP版本5.3.3 ,导致index.php执行错误,到此问题排除. 原文地址:https://www.cnblogs.com/cnxiaol/p/974109

phpmyadmin打不开500错误

phpmyadmin打不开500错误. 提示500错误.可以去掉友好提示.显示出具体错误. 我处理的时候显示的具体错误是白页现象 解决方案: 给上级目录一个users写入权限即可.(如直接在某个磁盘下.可以给它新建一个上级目录放进去) ps:很多php程序网站出现这样的问题.也可以按这种方案来解 phpmyadmin打不开500错误,布布扣,bubuko.com

项目部署到tomcat6.0启动成功后访问页面报500错误解决方法

如题:项目部署到tomcat6.0启动成功后访问页面报500错误解决方法,很奇葩,启动的时候没有任何问题,但输入访问地址后报500,去年国庆放假前夕,为这个问题伤神了半天最后解决了,今天又碰到了,乍一看摸不着头,后面仔细回想了下,迅速解决了问题. 原因:项目里面的jar和tomcat里面lib里面的jar重复了. 解决方法: 1.要么更换tomcat7或之后的版本,之后的版本就不会出现这个问题. 2.去部署之后的tomcat的webapps\项目名\WEB-INF\lib 里面删掉jsp-api

YunCart电商网站支付宝接口出现500错误

yuncart 是一套易与集成的php开源商城系统,方便多人同时经行二次开发,Yuncart 可以以非常方便的方式切换到sql server,oracle等数据库,大小1.9MB,感兴趣的朋友,可以去官网下载. 最近帮朋友用php做了一个电商网站,化妆品方面的.上网看了相关方面的程序源码,最后选择了yuncart,它轻量.简单.功能丰富等特点,闲暇时,做了些修改.下面就今天出现的问题,简单的说下,希望能帮助到有类似问题的童鞋. 下图为我朋友的网站:  问题描述:       在网站上购买支付成功

exchange 2007 OWA报HTTP 500错误

早上exchange部分用户不能登录,后经过owa测试发现报http 500错误,查了下资料,以下是建议 1.CAS上Microsoft Exchange Forms-Based Authentication Service是不是在启动状态. 2.  打开IIS,检查OWA的认证,建议你disable 所有的认证方式. 3.检查OWA HTTP Redirect的设置. 4.检查CAS上OWA(默认站点)的认证方式. 如果以上这些配置都没问题,运行以下命令,新建OWA virtual direc

F5 iRules-----http请求400/500错误时,重置

#  400/500错误重试 # #当服务返回400/500状态且当前pool中有存活的node重置http请求,并重新选择pool中的node. #直到返回正常代码或者轮询完所有存活node后,接受新的http请求 when CLIENT_ACCEPTED { set retry 0 } when HTTP_REQUEST { set http_request [HTTP::request] } when HTTP_RESPONSE { if { ([HTTP::status] starts_

IIS 配置PHP环境HTTP 500错误处理方法

在搭建php程序的时候遇到了500错误,访phpinfo测试也是500,重新安装了php,重新搭建网站,网站管理员账户,给上everyone权限测试都是500错误,纠结了较长一段时间,后来想到了程序池方面的影响,以下步骤是我解决我的问题的处理方法:打开IIS管理器,选择应用程序池--你的网站应用程序池(自己的创建)--单击右侧的"设置应用程序池默认设置",打开,在常规中,将"启用32位应用程序"设置为"True",将"托管管道模式&qu