我在我的dockerized服务器中实现了一个特性,当cpu和内存利用率过高时,它将忽略一些请求。
我已经找到了如何获取容器中的进程使用的内存和cpu时间,但是我还需要一种获取cpu限制和内存限制(由运行时选项设置)的方法来计算百分比。
另外,我可以从中读取主机系统的负载 /proc/loadavg
,是否有“每箱货物”的地方我可以阅读?
我在openjdk 14上使用java/kotlin。
更新:我发现我可以从 /sys/fs/cgroup/memory/memory.limit_in_bytes
1条答案
按热度按时间jvlzgdj91#
这都是由cgroups控制的。因此,您可以检查cgroup限制和利用率:
内存使用和限制是相当直接的监控。这比监视java堆使用情况更准确,因为堆只是java使用的内存的一部分。
期间的cpu配额给出分配的部分cpu数量,150000/100000=1.5。您可以随时间监视cpuacct.usage,以计算它何时超出限制并限制进程。