如何避免手动启动的线程死亡?

发布于 2024-12-04 07:15:48 字数 127 浏览 0 评论 0原文

我的系统上有一个在 IIS 上运行的进程,需要几个小时才能完成,因此它在线程上运行。

问题是该线程在一段时间后被删除,因为 IIS 进程超时(无活动)。这个线程不能中途停止。

如果线程正在运行,如何防止超时?

I have a process on a system that runs on IIS, it takes hours to finish so it runs on a thread.

The problem is that this thread is dropped after some time because the IIS process timeout (no activity). This thread can't stop in the middle.

How can I prevent this timeout if the thread is running?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷︶言冷语的世界 2024-12-11 07:15:48

在 IIS 中应用程序池的设置中,您可以将其配置为在一段时间不活动后不回收 AppDomain。但请注意,在 IIS 中使用长时间运行的任务不是一个好主意,并且此设置可能不是 100% 可靠。例如,如果您的服务器开始内存不足或 CPU 使用率高,IIS 仍然可以回收它。 IIRC 该阈值也可以配置。

最好的方法是将这些长时间运行的任务外部化为单独的 Windows 服务。

如果您无法执行上述任何操作,并且您绝对绝望,那么您在完全绝望时可以尝试的最后一件事就是通过定期发送 HTTP 请求来自动从该后台线程 ping Web 应用程序,以避免它死掉。但这确实应该是您最不应该尝试的事情。

In the settings of the Application Pool in IIS you could configure it to not recycle the AppDomain after a certain period of inactivity. Notice however that using long running tasks in IIS is bad idea and this setting might not be 100% reliable. For example if your server starts running low on memory or high CPU usage IIS could still recycle it. IIRC this threshold could also be configured.

The best way would be to externalize those long running tasks as a separate Windows Service.

And if you cannot do any of those previous things and you are absolutely desperate the last thing you could try in your total despair is to auto-ping the web application from this background thread by sending HTTP requests at regular intervals to avoid it from dying. But once again that should really be the last thing you should attempt.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文