Назад | Перейти на главную страницу

Почему две системы с балансировкой нагрузки так сильно различаются по кэшированной памяти?

У нас есть Java-приложение, работающее в двух системах RHEL5.5. Недавно мы оказались в ситуации, когда нам нужно было добавить больше памяти для обеих систем.

Каждая система перезагружалась с интервалом в 5 минут. Мы подтвердили, что системы были подключены даже через наше устройство балансировки нагрузки. Свободный вывод выглядел следующим образом:

hostA:

             total       used       free     shared    buffers     cached
Mem:       3977340    3570688     406652          0      26472    3194816
-/+ buffers/cache:     349400    3627940
Swap:      2097144          0    2097144

hostB:

             total       used       free     shared    buffers     cached
Mem:       3977340    1369456    2607884          0      44200     860736
-/+ buffers/cache:     464520    3512820
Swap:      1048568          0    1048568

Хотя я ожидал различий в памяти, которая в настоящее время используется для кеширования, такая крайняя разница кажется довольно обескураживающей. Есть ли какой-либо способ узнать, какие файлы в настоящее время имеют блоки в кеше, или какой-либо другой способ определить, почему такая большая разница будет очевидна в двух системах, которые являются зеркальными клонами друг друга, в настройке с балансировкой нагрузки с относительно коротким временем перезагрузки?

Я понимаю, что их стволы не в плохом состоянии, однако меня просят предоставить причину или объяснение, почему одна система помещает так много в кеш, а другая нет.

Другие настройки виртуальной машины, такие как swappiness, min_free_kbytes и т. Д., Одинаковы.

Есть идеи, какие шаги я предприму, чтобы понять это?

Вы можете использовать lsof для поиска файлов, используемых обоими процессами Java на обоих машинах, что может помочь указать на проблему.

Также было бы неплохо проверить в системе, где используется память и соответствующая кешированная память больше, чем используемая / кешированная память на самом деле вашей java-программой, а не какой-либо другой программой.

Сравните списки процессов с ps aux, top или любым другим способом. В дополнение к этому посмотрите разбивку использования памяти ядра с помощью slabtop и сравните выход тех.

Хорошо, с RHEL 5.5 вы, скорее всего, используете ext3 в качестве файловой системы, но, например, XFS сильно использует свободную память, и это становится очень очевидным с slabtop, но может сбить вас с толку, если вы просто смотрите free и другие отчеты о памяти.