total RAM - 600 MB或0.4 * total RAM吗?上下文:我正在尝试在T3实例上设置jenkins,尝试使用UbuntuServer16.04和18.04。
我从一个t3.micro实例(1GBRAM)开始,但是我发现OOM杀手杀死了我的java进程,因为我使用的不仅仅是-Xmx400m,这似乎有点低。我原本希望能够使用更多类似-Xmx750m的工具。
这是否意味着Ubuntu需要大约600 MB才能工作?
问题是,即使我将-Xms和-Xmx设置为非常高的值(如700m ),java进程也会启动。只有在我向网站提出第一次请求时,这个过程才会被终止。
我现在用一个t3.small实例(2GB内存)进行实验,但我再次不确定要配置什么。
在Windows上,这是一种确定性的:我将-Xms和-Xmx设置为相同的值。如果服务无法启动,则值太高。如果服务成功启动,则值很好,内存将保留给我的进程。
一些背景:
发布于 2019-05-09 18:53:30
如果您想在有限的资源环境中在Linux上运行任何应用程序,您应该确保了解Linux上的内存是如何实际工作的。听起来很刺耳,但这确实是了解幕后所发生的事情的唯一途径。
如果OOM杀手被触发,这意味着你的内存一开始就用完了。如果这种情况发生在-Xmx400中,那么这就是特定应用程序在特定环境中执行它所做的特定工作的限制。
在考虑将vm.overcommit_memory设置为非默认值之前,请确保您真正理解了分配内存和使用内存之间的区别(就linux虚拟内存系统而言)。否则,您只需确保您永远无法有效地使用系统的内存。
话虽如此:在80%-90%的用例中,缺省值通常是好的。对于Jenkins来说,内核中的默认值实际上应该运行得很好。您将希望内核过度提交可用内存(这是默认的),并使其在实际运行时触发OOM (也是默认的)。
如果这不适用于可用的内存,您将需要更多的内存。此外,设置应用程序不需要的更大的-Xmx值也被认为是有害的,但是您询问的是Linux内存,而不是Java内存:)
https://serverfault.com/questions/966608
复制相似问题