运行RHEL5操作系统的2GB机器的内存限制合理报警

我们有一堆服务器,具有以下configuration:

双核单处理器2GHz,1MBcaching。 交换启用与1GB限制内存 – 2GB操作系统 – RHEL5.3 64位

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

  1. 就像我search一样,似乎很难控制操作系统可以分配多less缓冲区/caching。 操作系统中是否有任何策略会控制它呢?
  2. 如果Java进程是CPU绑定的话,会有什么惊人的限制?
  3. 如果java进程是IO绑定,那将会是一个惊人的限制?
  4. 如果我们只运行一个单独的java服务(Xmx比可用内存less得多),我们是否应该担心可用内存? 不会SwapUsedPercent是检查我们是否遇到内存问题的最佳参数?

请分享你的想法。

就像我search一样,似乎很难控制操作系统可以分配多less缓冲区/caching。

除非你做了很多很多的testing,否则我build议你不要尝试。 在一般情况下,内核开发者已经做了大量的工作来尽可能地提高效率。 在你知道这是一个问题之前,最好先允许它caching,然后尽可能地caching它,这几乎总是一件好事。

如果Java进程是CPU绑定,那么这将会是一个惊人的限制吗?

取决于你的应用程序,但是如果你在哪里使用超过60%的CPU,我会担心。

如果Java进程是IO绑定,那将会是一个惊人的限制?

取决于您的应用程序,但通常要观看%iowait值。

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

在Linux上只看“空闲内存”几乎是没有用的。 我会更担心,如果缓冲区和caching接近0.我担心,如果你开始使用大量的交换,或者如果你在哪里交换频繁。