gpt4 book ai didi

java - 暴露应用程序是否正在通过 UDP 进行 GC

转载 作者:行者123 更新时间:2023-11-30 03:23:14 26 4
gpt4 key购买 nike

这个问题背后的动机是看看我们是否可以通过首先应用指定特定节点将 HTTP 请求路由到的常规策略(例如,通过循环策略)来使理论负载均衡器在边缘情况下更加高效)然后“窥视”系统的内部状态以查看它是否正在进行垃圾收集。如果是这样,负载均衡器会完全避开该节点并移至下一个节点。

在理想情况下,每个节点每隔几秒就会通过 UDP 将其内部状态“发出”到某个消息队列,让负载均衡器知道哪些节点在经历 GC 时可能处于“ radio Activity ”状态(我'我将其可视化为一个简单的 boolean 值)。

这里的问题是:我可以调整我的应用程序以利用其 JVM 的内部状态并 (a) 弄清楚我们此时是否处于 GC 模式 (b) 通过某种协议(protocol) (UDP/HTTP) 发出此结果通过线路连接到其他一些实体(例如 MQ 或其他实体)。

最佳答案

有很多方法可以远程监控和报告虚拟机。例如,一个众所周知的协议(protocol)是 SNMP。但这是一个非常复杂的主题。

实现取决于您的要求。如果您需要真正确定虚拟机处于良好状态,则可能需要将应用程序包装在控制实际虚拟机的包装虚拟机中。这非常复杂。

许多实现都使用内置的监视和分析接口(interface),这些接口(interface)通过 JMX 作为 Bean 公开给参与的应用程序。同样,这需要进行大量调整。

我想你可以创建一个工作线程来简单地充当金丝雀。它每 X 秒广播一次 ping,如果 ping 服务错过两个或三个 ping,则假定虚拟机尚未准备好提供服务。

问题是当虚拟机似乎永远不会回来时决定该怎么做。是虚拟机、网络还是其他什么?您如何跟踪虚拟机?这些并不是棘手的问题,但它们以有趣的方式结合起来,让你的生活同样有趣。

解决这个问题的方法有很多,每种方法都有微妙的含义。

关于java - 暴露应用程序是否正在通过 UDP 进行 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824785/

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