当前位置: 首页 > 知识库问答 >
问题:

如何确定特定endpoint是否已在Spring Boot中启用保留生命?

岳京
2023-03-14

我有一个Spring Boot应用程序,其中有几个endpoint声明如下:

@RestController
public class MyRestController {

    @PostMapping("/someRequest")
    public void doSomething(final @RequestBody MyRequest request) {
       // ...
    }

}

如何确定此控制器使用的套接字是否已打开TCP保持活动状态?

更新1:我用libdontdie启动应用程序,即。sudoDD_DEBUG=1DD_TCP_KEEPALIVE_TIME=4DD_TCP_KEEPALIVE_INTVL=5DD_TCP_KEEPALIVE_PROBES=6LD_PRELOAD=/usr/lib/libdontdie.sojava-jarmyapp.jarspring.config.location=myapp-config.yaml


共有2个答案

何建中
2023-03-14

投票是解决方案。在特定时间间隔后继续轮询。

宣星光
2023-03-14

很有可能发生以下情况之一。这可能与keepalive无关。

  1. 由于CPU空闲,您的AWS资源正面临冷启动或进入Hibernate状态。这可能是因为AWS
  2. 您的/someRequestendpoint依赖于一些下游资源,比如数据库、另一个restful服务,或者可能与处于空闲状态的I/O有关
  3. 如果正在连接到数据库,请确保已启用“重新连接”。这可能取决于您如何设置连接。查看Spring正在失去与DB的连接,并且没有恢复或重新连接,了解如何针对您的情况进行恢复或重新连接
  1. 检查AWS控制台上实例的健康状况,看看它是否已达到IDLE。尝试将节点获取到IDLE。
  2. 使用Spring Boot Actuator可以测试下游依赖项的健康状况,并在进行任何API调用之前确保您的健康状况良好。请参阅,https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html
  3. 我不想推荐这个,但您的上述所有选项都干燥,然后创建一个虚拟endpoint,如/info/Health并定期轮询它。这不是一个很好的解决方案,但预计在大多数情况下都可以工作。
 类似资料:
  • 问题内容: 我如何断言页面的CSS已在Watin 2.1中成功加载并应用了其样式? 问题答案: 在进行了一些研究并写下我的答案之后,我偶然发现了该链接,该链接解释了您需要了解的有关CSS的所有信息,何时加载CSS以及如何检查CSS。 实际上,所提供的链接对它的解释很好,以至于我在其中添加了一些引用以供将来参考。 如果您好奇,我的答案将是#2和#4的变体。 何时真正加载样式表? … 顺便说一句,让我

  • 问题内容: 我有一个像这样的值: 给定,有没有一种很好的方法来测试是否包含? 问题答案: 警告:这不适用于图元数组(请参见注释)。 从开始,你现在可以使用。 要检查的阵列是否,或包含一个值使用或分别。 例

  • 问题内容: 如何确定在Java数组中是否包含特定值? 问题答案: 从java-8开始,你现在可以使用Streams。 要检查的阵列是否int,double或long包含一个值使用IntStream,DoubleStream或LongStream分别。 例 Java SE 9的简要更新 引用数组不好。对于这种情况,我们要紧紧追赶。从Java SE 9开始,我们有了。 “给出String,是否有测试V

  • 问题内容: 出于某种原因,我的表单不想获取复选框的值…我不确定这是否是我的编码,但是当我尝试输入值时,我得到了结果。我有什么问题? 编辑 我尝试将其更改为此 但是现在它甚至不想。怎么了 问题答案: 将函数放在内部。当执行该行时,主体尚未解析,并且该元素不存在。这工作得很好:

  • 问题内容: 我正在尝试确定Pandas列中是否有一个具有特定值的条目。我试图用来做到这一点。我以为这是行得通的,除非当我向它提供一个我不知道的值时,它仍然返回。当我将一个子集添加到仅包含与缺少的ID匹配的条目的数据框时,显然其中没有条目。如何确定Pandas数据框中的列是否包含特定值,为什么我的当前方法不起作用?)。 问题答案: Series的值检查值是否在索引中: 一种选择是查看它是否具有唯一值

  • 问题内容: 我最喜欢的Linux工具之一是lsof-真正的瑞士军刀! 今天,我发现自己想知道WinXP系统上的哪些程序打开了特定文件。有与lsof等效的工具吗?此外,有问题的文件是通过网络共享进行的,因此我不确定是否会使问题复杂化。 问题答案: 使用Sysinternals Suite中的Process Explorer,Find Handle或DLL函数将让您搜索打开该文件的过程。