运行 RHEL5 OS 的 2GB 机器的合理内存限制警报

运行 RHEL5 OS 的 2GB 机器的合理内存限制警报

我们拥有一批具有以下配置的服务器:

双核单处理器 2GHz,1 MB 缓存。交换已启用,限制为 1GB 内存 - 2GB 操作系统 - RHEL5.3 64 位

我们的一个闹钟配置为当可用内存低于 256MB 并持续 2 小时或以上时唤醒我们。我们的机器经常遇到内存问题。只有一个 Java 服务以 1 GB 的限制运行(使用 Xmx 标志),其余内存供操作系统使用。我们观察到大量内存被分配给缓冲区/缓存(多达 1GB)。此时我有几个问题很难正确回答。

  1. 我已经搜索了很多次,但似乎无法控制操作系统可以为缓冲区/缓存分配多少空间。操作系统中是否有任何策略可以控制这一点?
  2. 如果 Java 进程受 CPU 限制,那么令人担忧的限制是什么?
  3. 如果 Java 进程受到 IO 限制,那么令人担忧的限制是什么?
  4. 如果我们仅运行单个 Java 服务(Xmx 比可用 RAM 少得多),我们是否还应该担心可用内存?SwapUsedPercent 不是检查我们是否遇到内存问题的最佳参数吗?

请分享您的想法。

答案1

据我所知,似乎不可能控制操作系统可以为缓冲区/缓存分配多少空间。

除非您已经进行了大量测试,否则我建议您不要尝试。内核开发人员已经做了很多工作,试图让事情在一般情况下尽可能高效。除非您知道这是一个问题,否则最好让它允许并让它尽可能多地缓存,这几乎总是一件好事。

如果 Java 进程受 CPU 限制,那么令人担忧的限制是什么?

取决于您的应用程序,但如果您使用的 CPU 超过 60%,我就会担心。

如果 Java 进程受到 IO 限制,那么令人担忧的限制是什么?

取决于您的应用程序,但通常希望观察 %iowait 值。

我们是否应该担心可用内存?

在 Linux 上,只查看“可用内存”几乎毫无用处。如果缓冲区和缓存接近 0,我会更担心。如果您开始使用大量交换,或者您频繁进行交换,我会担心。

相关内容