我想知道是否有一种最佳方法来设置 Kubernetes 容器的内存限制,特别是对于运行 java 的应用程序。
对于Java应用程序,我们必须结合Kubernetes资源来设置堆值。这就像我们被迫猜测 Kubernetes 微服务的内存限制。
更清楚地说,
我能想到的可能的解决方案是
除了上述之外,如果有人在设置 Kubernetes 容器的内存限制时遵循任何其他方法,我想得到一些评论。 有没有人遇到过这种情况!!
是的,我多次遇到过这个问题。您肯定希望保留 k8 的内存限制,以避免嘈杂的邻居问题。您提到的可能的解决方案是正确的。要获得该数字,必须进行监控和负载测试。
除此之外,我还使用 Java 进程的分析来查看 GC 是如何被触发的,以及内存使用量是否应该保持不变或随着负载的增加而增加。分析是一个非常强大的工具,可以提供对数据结构的次优使用的一些见解。
要介绍什么
在进行 Java 分析时,您需要检查
如何分析 Java 应用程序
这里有一些很好的资源
如何使用 Java 分析 Kubernetes 应用程序
调整云中应用程序的内存限制是一种平衡行为,因为一方面,您希望减少内存消耗,但另一方面,满足用户需求可能需要分配更多内存。
因此,首先要确定你的应用程序应该做什么以及以什么价格进行。负载测试很棒,但您还应该利用压力测试,即您的应用程序在峰值负载时需要多少资源。否则,您的服务可能会崩溃。 关于性能测试,我遇到了 Devoxx 的一个有趣的演示,其中详细讨论了最佳 Kubernetes 扩展所需的测试:https://www.youtube.com/watch?v=VQJ6B35-eWs