幻化的蓝莲花(5)——Domino与浏览器续

HTTP容易挂起与宕机?
——在我的印象中,所有Domino任务里面,HTTP的确是比较容易宕机或者挂起的一个,尤其是挂起。HTTP挂起往往带来比较恶劣的影响,因为用户会在第一时间发现服务请求得不到响应,管理员的电话瞬间就会被各式各样的投诉占满。HTTP挂起往往是所有Domino故障中最让人痛苦的一个,因为可能造成HTTP挂起的原因非常多,要准确定位HTTP挂起的原因一般需要打开服务器的debug参数,获取故障时所有HTTP线程的httpr记录。。。一句话,管理员们都不喜欢看到HTTP挂起,但很多情况下却不得不面对。

[@more@]我曾经在很多Notes开发论坛上看到请教解决挂起问题的帖子,也有很多人分享自己的一些经验,不过很多时候,这类帖子往往以这样一句话收尾:“Domino的HTTP进程就是容易挂起,升级一个新版本吧。”

升级的确是一种解决问题的好办法,但是对挂起并不总是有效——或者应该说,很少有效。这是因为,从IBM 800以及IBM 服务人员解决挂起问题的经验来看,绝大多数的HTTP挂起的原因都不是Domino自身的bug,而是应用开发。

举一个例子,比如在应用开发中,如果用到了java代理或者servlet,申请了Notes object之后,有没有释放?有释放的话,释放语句写在什么位置?是try模块里还是finally模块里?这看似一个很初级的问题,但是在很多情况下就是这种编程风格的巨大漏洞会造成java的内存无法回收,从而引起挂起。——补充一点,我个人认为,JAVA的GC(垃圾回收)机制是一个非常可怕的东西,不是说这个思路不好,而是说很多开发者错误的认为有了GC机制就不用在编程中考虑Java的内存回收,这是非常致命的编程隐患,对J2EE和Domino应用都是如此。

其他可能的问题还有,对一些共享资源没有添加锁机制,导致http线程间出现死锁。初步确定这种问题的方法也很简单(注意,是确定而不是解决),把server文档中同时运行web代理的选项选成否之后问题往往会消失,但性能也会大幅下降(所以只能用来确认问题而不是解决问题)。这种情况下需要仔细排查代码,找到问题的所在。所用的工具嘛。。。sigh,还是那个残忍的nsd。。。建议最好还是交给专业人士去分析吧。

还有用户或者开发商希望在Domino HTTP挂起之后,可以通过调整参数解决问题。例如增加活动线程数,取消持久连接,增加最大连接数等等,某些情况下,这种做法可以降低挂起几率,但正如上面提到的,绝大多数的HTTP挂起的原因还是在应用开发上。如果代码中的问题不彻底找到,那么负载一旦加大,挂起依旧会出现。

另一方面,Domino HTTP自身有没有bug或者漏洞?当然有,也不少(只要是软件就一定有bug),但是远远没有多到可以把所有的HTTP问题都推给升级或打补丁来解决的地步。即使在R5甚至更早的版本上,Domino都不乏大量B/S成功案例,而在今天国内许多开发商也都是基于Domino的Web功能在开发应用。在开发调试或者运行过程中,谁没有碰到过挂起?恐怕很少。但好的开发商会按照相应的步骤去调试,在厂商的帮助下定位挂起的真正原因,而不是一遇到挂起就去归咎于产品本身。类似于Java内存回收漏洞这样的错误,无论是放在Domino的什么最新版本上,或者放在WebSphere,WebLogic的什么最新版本上,都注定会引起系统的崩溃。

总而言之:
一,Domino的HTTP本身并不会那么频繁地挂起,但某些不好的开发习惯会引发这一点;
二,升级或者打补丁可以防止一些问题,但永远不是解决问题的最好手段,除非厂商在分析原因之后建议你这么做。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8866403/viewspace-902922/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8866403/viewspace-902922/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值