首页 > 代码库 > 绕过问题也是一种能力--记一次接口的问题
绕过问题也是一种能力--记一次接口的问题
接到现场实施的反馈:现在有一系统慢,整个系统卡住了。诊断过程:
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. 继续分析接口的代码,发现业务很简单,就是调用一个webservices。喜出望外,定位到接口未加超时时间,要开发加上,然后发增量到现场。
现场增量后,还是一天堵塞一次,问题没有解决,接口的超时设置不生效?但在本地测试是可以的。继续分析接口代码,发现接口是通过xfile实现,版本是1.4.2,在网上找了一下相应的设置方法,有三种,都加上去,增量上去之后还是没有解决问题。
由于找不出来问题,只好绕过xifile,把接口改写,用axis的方式调用接口,增量上去后,问题解决,整个解决过程花了二周的时间。
总结:当遇到一个问题实在是解决不了,可以考虑绕过去,用其他的方式解决。当然,也不能一遇到问题就绕过去,度怎么把握,要靠自己,本次事件关于接口部分的调整,在网上找了很久的解决方案,同时也找了公司写接口最专业的人来支援诊断,这样都解决不了,只能绕过去。对于开源的架构,也不能全信,对它的使用,一定要非常成熟,使用非常广泛才能在项目中使用,要不然,一定有后悔的时候。