docker - 使用有限资源调整 Mule 性能

标签 docker mule kubernetes

我们在容器化环境中运行我们的 Mule3.8.0EE 应用程序,每个容器一个应用程序。从容器层面,由于物理主机的资源池有限,我们限制了 cpu/memory 资源,我在高峰期指的这个 API 最多只能使用 1 个 cpu 核心和 512MB 内存(由 kubernetes 管理)

mule 流程相当简单 - 一个带有 APIKit 的 http 端点,然后通过 redis 连接器进行后端 Redis 调用以执行 get by key 操作,以及用于将数据转换为 json 并返回的 dataweave

我们检测到的问题是一旦有加载请求(100+ 并发),使用所有默认的性能相关配置(策略、线程等),应用程序总是触发 JVM 退出,然后在容器内重新启动自身

问题是鉴于这些有限的资源,我们应该如何调整它以至少不死但缓慢地处理这些负载。期望建议例如:我们应该增加线程池还是减少?我们应该使用同步处理策略吗?等等

更新:我们正在使用 docker json 日志驱动程序,因此 mule 应用程序将其所有日志输出到容器的控制台并由 docker 获取,如果我们为每个请求打印一行日志并且一旦有负载,我注意到这也是一个问题,这个 glibc/tanuki 包装问题(在 mule3.8 之后被认为是固定的)。

提前致谢

最佳答案

https://docs.mulesoft.com/mule-user-guide/v/3.6/tuning-performance用尽的行动部分可能会有所帮助

关于docker - 使用有限资源调整 Mule 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730914/

相关文章:

docker - 如果我在 Dockerfile 中使用 EXPOSE $PORT ,我可以在使用 `docker run` 时取消暴露它的端口吗?

docker - 如何确保始终连接到相同的Docker容器?

java - Mule ESB - 管理队列上消息的 Java 源代码类

java - 如何从Mule批量发送消息到ActiveMQ

Kubernetes中使用nginx入口路径的 Angular 应用程序

java - kubernetes中如何检索转发端口的值?

java - 如何通过 Kubernetes 管理的 Docker 容器连接到 JMX?

docker - 从容器外部编辑Docker容器中的文件?

mysql - 如何在不在主机上发布端口的情况下访问在 docker 容器(由 Rancher 管理)中运行的 MySQL?

file - Mule - 从入站端点获取文件名