2014-12-15 5 views
-6

Мой вопрос касается использования ОЗУ. На нашем производственном сервере (виртуальная машина) имеется 32 ГБ оперативной памяти и работает только с одним Java-Tomcat с карандашом в приложении. Для получения дополнительной информации см. Ниже вывод верхней команды и использование ОЗУ.Использование ОЗУ

top: 
top - 16:43:59 up 123 days, 8 min, 3 users, load average: 0.00, 0.00, 0.00 
Tasks: 339 total, 1 running, 338 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 32879672k total, 31617688k used, 1261984k free, 513508k buffers 
Swap: 16777208k total, 71464k used, 16705744k free, 6933936k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
23410 root  20 0 6214m 1.6g 22m S 0.3 5.1 124:00.66 java 
26312 root  20 0 314m 20m 9.8m S 0.3 0.1 135:30.82 gnome-terminal 
31009 root  20 0 15164 1436 952 R 0.3 0.0 0:00.02 top 
    1 root  20 0 19344 1288 1068 S 0.0 0.0 0:02.72 init 


RAM : 
      total  used  free  shared buffers  cached 
Mem:9  30876  1232   0  501  6771 
-/+ buffers/cache:  23603  8505 
Swap:  16383   69  16314 

Система потребляет 23-24 ГБ оперативной памяти из 32 и была сконфигурирована с JVM емкостью 2 ГБ. Мой вопрос в том, почему он потребляет большую часть ОЗУ. Может ли кто-нибудь помочь мне получить это.

ответ

1

Мой вопрос в том, почему он потребляет большую часть ОЗУ. Может ли кто-нибудь помочь мне получить это.

Всякий раз, когда вы читаете файл, он переходит в кэш диска, он остается там до тех пор, пока вы не удалите файл или давление в памяти, из-за которого оно будет выселено. Это означает, что, как только ваш компьютер прочитает 32 ГБ дискового пространства (с момента загрузки), вы должны ожидать, что у него будет вся память, используемая для чего-то.

Вопрос, который вы должны задать, является причиной того, что некоторая память не используется. Скорее всего, потому, что программы были запущены, а затем остановлены. Также ОС пытается сохранить свободную часть памяти для резких распределений памяти, таких как запуск программы. Около 1 - 2 ГБ бесплатно кажется разумным.

В верхней части вы можете видеть, что 7 ГБ для «кэшированных» файлов и 0,5 ГБ для буферов. В вашей JVM используется память объемом 1,6 ГБ. Остальная часть используется ОС и другими программами.

Если вы хотите увидеть разрыв вниз памяти использования пробега less /proc/meminfo

MemTotal:  8077800 kB 
MemFree:   2925896 kB 
Buffers:   161072 kB 
Cached:   2282792 kB 
Active:   3714312 kB 
Inactive:  1148840 kB 

Примечания: что в то время как я активно использую ~ 3,7 ГБ, еще 2,2 ГБ используется для кэширования файлов.

Трюк, который я использую, чтобы увидеть, сколько памяти действительно используется, - это вытеснить память. например

dd if=/dev/zero of=/tmp/deleteme bc=1000000 count=24000 
rm /tmp/dleteme 

Это создаст файл 24 ГБ и удалит его. Это покажет вам, сколько памяти действительно необходимо при запуске. Я выбрал 24 ГБ, так как это около 75% основной памяти.

Смежные вопросы