我有一个在CF8中运行的应用程序,它经常调用外部系统,如搜索引擎和ldaps。但有时某些请求永远不会得到响应,并且始终显示在活动请求列表中。
即使在管理中设置了请求超时,也不会应用于这些方案。
我还有大约5个请求仍在等待最后20小时完成!!!
My server settings are as below
Timeout Requests after ( seconds) : 300 sec
Max no of simultaneous requests : 20
Maximum number of running JRun threads : 50
Maximum number of running JRun threads : 1000
Timeout requests waiting in queue after 300 seconds
我阅读了一些文章,发现有些情况下线程永远不会被响应或被杀死。但我没有一个可靠的解决方案,我怎么能超时或自动杀死
非常感谢你们对此有所了解:)
答案 0 :(得分:2)
ColdFusion超时不适用于“第三方”连接。
例如,长时间运行的LDAP查询将占用所需的时间。当调用模板从查询中获取结果时,将应用超时。
这通常会导致混淆解释错误。您将收到一条错误消息,指出在长时间运行请求之后中的任何一个函数都会导致超时。
答案 1 :(得分:2)
您可以(也可能应该)在CFLDAP呼叫本身上设置超时。 http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f97.html
答案 2 :(得分:1)
感谢Antony推荐我的博客文章CF911: Lies, Damned Lies, and CF Request Timeouts...What You May Not Realize。请求在预期时没有超时的问题可能非常麻烦,并且对大多数人来说都是一个惊喜。
但Anooj虽然至少解释了为什么他们不会死(并且你不能在CF中杀死他们),但要考虑的一件事是你可以在被调用的REMOTE服务器中杀死他们。你的情况,LDAP服务器。
您可以转到该服务器的管理员,并向他们展示CF有长时间运行的请求,他们可能能够发现并解决问题。如果他们可以,可以释放与CF的连接,然后您的请求将停止。
我刚刚在博客条目的底部添加了一个关于这个想法的新章节,因为“那么,对于挂起的请求,我真的无能为力吗?”
希望有所帮助。