我在ColdFusion 8上使用CFTHREAD。
偶尔我发现所有线程都停止执行并保持STATUS = NOT_STARTED
服务器监视器告诉我没有正在运行的请求,没有正在运行的线程以及越来越多的排队线程。
恢复的唯一方法是重启ColdFusion实例。
我只在少数几个地方使用线程。对CFTHREAD的一些调用是JOINED - 在这种情况下,我终止任何在超时内没有完成的线程。对CFTHREAD的一些调用是昙花一现。
有谁知道为什么会这样?
谢谢,
William Bibby
答案 0 :(得分:0)
在我的一个应用程序中,我已经面临线程悬挂问题。那是因为,我的线程正在运行一些HTTP调用或大量文件下载程序,它面临连接超时问题。
由于此线程挂起,我们的服务器也变得非常繁忙,因为正在运行的线程获取的资源无法释放。
我的解决方案:只需检查线程运行的时间。如果它超过特定的间隔,那么我就是通过代码杀死线程。
您可以使用ColdFusion Admin API来终止线程。如果您想如何使用admin API终止线程,请参阅here