绕过问题也是一种能力--记一次接口的问题

       接到现场实施的反馈:如今有一系统慢,整个系统卡住了。诊断过程:

      1. 检查应用日志,即weblogic日志,发现有阻塞的线程,查到代码是调用的接口

<2014-7-10 下午03时47分30秒 CST> <Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '7' for queue: 'default' has been busy for "994" seconds working on the request "Http Request: /web/dwr/call/plaincall/TodoDWR.getTodoClassifyList.dwr", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.> 

      2. 检查数据库报告,发现负载很小,能够推断问题不是出如今数据库层面上。

      3. 继续分析接口的代码,发现业务非常easy,就是调用一个webservices。喜出望外。定位到接口未加超时时间,要开发加上,然后发增量到现场。

      现场增量后。还是一天阻塞一次。问题没有解决,接口的超时设置不生效?但在本地測试是能够的。

继续分析接口代码。发现接口是通过xfile实现,版本号是1.4.2,在网上找了一下对应的设置方法,有三种。都加上去。增量上去之后还是没有解决这个问题。

      因为找不出来问题,仅仅好绕过xifile,把接口改写,用axis的方式调用接口。增量上去后。问题解决。整个解决过程花了二周的时间。

      总结:当遇到一个问题实在是解决不了,能够考虑绕过去,用其它的方式解决。

当然,也不能一遇到问题就绕过去,度怎么把握,要靠自己,本次事件关于接口部分的调整,在网上找了很久的解决方式,同一时候也找了公司写接口最专业的人来支援诊断,这样都解决不了,仅仅能绕过去。对于开源的架构。也不能全信,对它的使用,一定要很成熟,使用很广泛才干在项目中使用,要不然。一定有懊悔的时候。

原文地址:https://www.cnblogs.com/yxwkf/p/5069230.html