- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您知道(如果可能的话)如何在 spring boot 微服务中为特定端点保留线程/内存吗?
我有一个微服务接受通过 Spring MVC 的 HTTP 请求,这些请求会触发对第三系统的 http 调用,这有时是部分退化,并且响应非常缓慢。我无法减少超时时间,因为有些调用本质上非常慢。
我启用了 spring-boot-actuator /health
端点,我将其用作容器 livenessProbe
在 kubernetes 集群 中。有时,当第 3 个系统降级时,微服务不会响应 /health
端点,kubernetes 会重新启动我的服务。
这是因为我正在使用 RestTemplate 进行 HTTP 调用,所以我不断地创建新线程,并且 JVM 开始出现内存问题。
我想过一些解决办法:
实现高可用性“/health”端点、保留线程或类似的东西。
使用异步 http 客户端。
实现断路器。
为我使用的每个第三个端点配置自定义超时。
创建其他小型服务 (golang) 并将其部署在同一个 pod 中。此服务将处理 liveness 探测。
将服务迁移/重构为小型服务,并可能使用其他框架/语言,如 Vert.x、go 等。
你怎么看?
最佳答案
执行器健康端点在 Spring boot 中非常方便——在这种情况下几乎太方便了,因为它进行的健康检查比您在 active 探测中所需要的要深入。为了准备就绪,你想做更深入的检查而不是活跃度。这个想法是,如果 Pod 有点不堪重负并且无法就绪,那么它将从负载平衡中退出并获得喘息机会。但是,如果它的 active 失败,它将重新启动。所以你只需要最少的 Activity 检查(Should Health Checks call other App Health Checks)。通过对两者都使用执行器运行状况,您繁忙的 Pod 无法在它们首先被杀死时喘口气。并且 kubernetes 在执行这两个探测时会定期调用 http 端点,这会进一步导致您的线程使用问题(请考虑探测器上的 periodSeconds)。
对于你的情况,你可以定义一个 liveness 命令而不是一个 http 探测 - https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/#define-a-liveness-command .该命令可以只检查 Java 进程是否正在运行(有点类似于您基于 go 的探测建议)。
在许多情况下,使用执行器来提高活跃度会很好(想想在线程之前遇到不同约束的应用程序,如果您使用响应式(Reactive)堆栈进行异步/非阻塞,就会遇到这种情况)。你的是一个可能导致问题的地方 - 执行器对依赖项(如消息代理)的可用性的探测可能是另一个你过度重启的地方(在这种情况下是第一次部署)。
关于java - Kubernetes liveness - 使用 Spring Boot 为特定端点保留线程/内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005849/
我在使用 jquery 1.9.1 时遇到问题。我已经搜索过,但这些都没有解决我的问题。 $('.sm2_expander').live('click', function() { $
有些 Live CD 可以启动操作系统并允许您无需安装即可使用它。 我想知道是否有一种简单的方法来自定义 Live CD,以便它只加载运行一个应用程序所需的内容,然后运行该应用程序。 最佳答案 对于
当我从 Live CD 启动 Linux Mint 时,我能够将文件保存到“文件系统”。但这些文件保存在哪里呢?不可能是光盘,因为它是 CDR。我不认为它存储在 RAM 中,因为它只能保存这么多数据,
我正在尝试 ZIO . 我不明白为什么要添加Live作为Trait,然后提供一个object,比如: object Live extends Live 在不同的地方可以找到这种模式,例如 zio.co
我正在尝试播放 RTSP 直播流媒体网址“rtsp://164.100.51.207/broadcast/DDLive”。但我收到此错误 (1,-1)。 我正在尝试这段代码 VideoView myV
如何更改标签的 html,如下所示: $('#someId').html('foo bar'); 使用 live() 或 delegate() 函数时?只是为了澄清,我不希望这种情况发生在悬停、焦点或
我在这里没有看到很多关于 Microsoft 提供的 xbox live api 的帖子。谁能给我指一个有活跃的 xbox live api 社区的网站? 最佳答案 这是相当模糊的,所以我会提供一个广
我有一个带有 class="centerMessage" 的 div 。该 div 会在页面加载后的某个时刻插入到 DOM 中。我想更改此 div 上的 CSS 以使其居中。我尝试了下面的CSS功能,
我正在开发一个应用程序,我需要将通过智能手机的摄像机(在 iPhone 和 Android 手机上)捕获的视频流式传输直接到 YouTube Live。 我研究了 Codename One 的 Cap
当使用 DLT 时,我们可以使用 STREAMING LIVE TABLE 或 LIVE TABLE 创建一个实时表,如文档中所写: CREATE OR REFRESH { STREAMING LIV
所以,我在一个网站上工作,我希望用户能够使用他们的 xbox 帐户登录,将他们的玩家标签链接到我的网站。我可以像这样使用 oauth: 但是,我不知道如何获得 xbox live 权限。执行此操作的其
我正在使用苹果的 http 实时流媒体将实时视频流式传输到 ipad/iphone。其中一个重要的步骤是将传输流与播放列表一起分割成几个 ts 段。根据苹果的文档,推荐的 ts 段持续时间为 10 秒
我正在尝试实现“使用 Outlook.com 登录”流程,其中涉及客户端和服务器代码。 流程是: 从客户端将用户重定向到: https://login.live.com/oauth20_authori
如果您使用 YouTube 直播打开广播“事件”,用户可以使用回放功能,让他们无需离开界面即可观看过去 3 小时的广播 - 您可以像观看视频一样轻松观看,但您仍处于广播中,您只需控制过去缓冲的分钟数。
我有一个使用 HTTP Live Streaming 传送视频内容的应用程序。我希望应用程序根据设备屏幕尺寸(4x3 或 16x9)检索适当的分辨率。我运行 Apple 的工具来创建主 .m3u8 播
我有一个使用 HTTP Live Streaming 传送视频内容的应用程序。我希望应用程序根据设备屏幕尺寸(4x3 或 16x9)检索适当的分辨率。我运行 Apple 的工具来创建主 .m3u8 播
super 快的。这是我的 .gitignore(在我的 repo 的根级别 # Makefile stuff LIVE-* .install-post-all 当我这样做时,LIVE-* 位不起作用
因此,我在 Gamasutra 阅读了 John Carmack 的采访,其中他谈到了他所谓的“存在于内存映射文件中的实时 C++ 对象”。以下是一些引用: JC: Yeah. And I actua
在教师端对类(class)进行更改后,有预览更改和查看实时版本的选项,但目前这两个选项都无法正常工作,我们必须在 URL 中附加基本 url (www.abc.com/)是时候预览更改或查看实时版本了
有人可以详细说明aria-live="assertive"之间的区别吗?和 aria-live="polite" ? 据我了解 aria-live="assertive"将获得更高的优先级并清除队列,
我是一名优秀的程序员,十分优秀!