gpt4 book ai didi

java - Spring Scheduler 意外停止

转载 作者:IT老高 更新时间:2023-10-28 13:05:22 24 4
gpt4 key购买 nike

我们在 Tomcat 6 上有一个 Spring 3 Web 应用程序,它通过 @Scheduled 使用多个预定服务(主要用于每晚运行的作业)。现在看来,有时(很少,可能在两个月左右一次)调度程序线程停止工作,因此第二天晚上不会执行任何作业。我们的日志文件中没有异常或日志条目。

有人知道为什么会这样吗?或者如何获取有关此问题的更多信息?

有没有办法在应用程序中检测到这种情况并重新启动调度程序?

目前,我们正在通过每 5 分钟运行一次并创建一个日志条目的日志记录作业来解决此问题。如果日志文件停止更新(由 nagios 监控),我们知道是时候重新启动 tomcat 了。在没有完全重启服务器的情况下重新启 Action 业会很好。

最佳答案

由于这个问题获得了如此多的投票,我将发布我的问题的(可能非常具体的)解决方案是什么。

我们正在使用 Apache HttpClient 库来调用计划作业中的远程服务。不幸的是,执行请求时没有设置默认超时。设置后

connectTimeout
connectionRequestTimeout
socketTimeout

30 秒后问题消失。

int timeout = 30 * 1000; // 30 seconds
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(timeout)
.setConnectionRequestTimeout(timeout)
.setSocketTimeout(timeout).build();
HttpClient client = HttpClients.custom()
.setDefaultRequestConfig(requestConfig).build();

关于java - Spring Scheduler 意外停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com