我在这里有一个关于在 XPages 中提高我的 30gb 工作流应用程序性能的问题。有很多建议,但大多数都涉及回收、改进代码等,而实际上解决速度问题的方法却很少被谈论 - 应用程序属性中的高级选项卡(请参阅我的上一篇文章)
现在我有一个运行得很好的应用程序,它速度很快,人们很高兴,但服务器仍然会定期崩溃。或者我应该说,HTTP 变得无响应并且在极端情况下运行 100% CPU,因此 Domino 也很缓慢但仍在运行。
我一直在监视 HTTP 线程
告诉 http 显示线程状态
在大多数情况下,我看到 80 个空闲的 http 线程,或者正在做某事但很快就释放了。自从上次更新应用程序以来,我们更专注于回收 SSJS 中的笔记对象,我认为我们会看到挂起的 http 线程结束,但它仍然存在。
我几乎可以肯定,这不是导致此问题的无限循环,因为我与最终用户确认的 2 个案例完全不同,据我所知没有循环。
用户正在编辑文档,按下工作流按钮以批准并将其发送给下一个用户。他们正在使用 Chrome。chrome 选项卡上的旋转圆圈开始,然后服务器应该运行工作流代理,发送电子邮件,然后关闭浏览器上的页面。我注意到一个小时后有 2 或 3 个挂起的 http 线程尚未释放,所以我联系了用户,她告诉我页面没有刷新,但旋转的圆圈仍在 chrome 中旋转,表明服务器正在做某事. 我检查了日志,工作流代理已运行,电子邮件已发送,文档已更新。她刷新了页面,现在可以看到它已更新,但无论出于何种原因,Chrome 都耐心地坐在那里等待,从未收到 LS 代理已运行的消息。我使用notesAgent。runOnServer 并返回结果整数以确认代理是否已运行。如果它返回 1(我认为)那么页面应该关闭,否则它应该显示一条消息。该页面从未刷新,因此它没有显示任何内容,但代理确实完成了。
一个用户在晚上结束了大约 15 个挂起的 http 线程。在日志中,我可以看到她多次尝试重新加载页面。然后搜索她想要的文档,然后尝试打开它。当我检查她说她搜索了文档时,搜索页面显示了结果(在重复控件中),每次她单击文档打开它时都没有发生任何事情。所以她甚至没有进入文件,但每次尝试后线程都挂了。我从笔记日志中获取了 URL 并尝试了它,文档打开正常。我进行了相同的搜索,文档打开正常。我直接向她发送了一个指向该文档的链接,它对她来说打开得很好。诡异的!!
有什么方法可以诊断这种行为,因为现在我必须让 domino 管理员打开运行 tell http show.... 命令整天密切关注它以确保线程没有挂起。通常到了午餐时间,服务器需要重新启动,这很垃圾。
请帮助我的理智:-)