У меня есть Go Daddy Linux VPS, хостинг Java-сервера и еще кое-что. Очевидно, у нас заканчивается память:
[user@xxx ~]$ free -m
total used free shared buffers cached
Mem: 4096 4090 5 0 0 0
-/+ buffers/cache: 4090 5
Swap: 0 0 0
[user@xxx ~]$
Но вот самое интересное. Я не могу найти лишнюю память с «ps» - все перечисленные процессы имеют «разумное» использование памяти (менее 2%), но системе все еще не хватает памяти.
Попытка увеличить доступную виртуальную машину путем монтирования свопа приводит к ошибке («Операция запрещена»). Я обнаружил, что это ограничение OpenVZ - только хост должен переключаться на диски.
Вывод "vmstat" не очень полезен:
[user@xxx ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 5548 0 0 0 0 22 105 0 15 0 1 99 0 0
[user@xxx ~]$
Есть идеи, как я могу найти точную причину нехватки свободной памяти, не убивая вслепую службы и не дожидаясь повторения проблемы? Заранее спасибо!
Были ли у вас ошибки из-за нехватки памяти в конкретном приложении? Или у вас проблемы с производительностью? Что конкретно заставляет вас думать, что у вас не хватает памяти (кроме команды 'free -m').
Первое, что нужно искать, - это МНОГО процессов, использующих небольшой объем памяти. Если у вас есть 100 процессов, использующих только 128 МБ памяти, вам, например, не хватит памяти.
Это нормально, когда в Linux используется почти 100% вашей памяти. Однако я недостаточно знаю, как это работает у вашего конкретного поставщика VPS, чтобы знать, считается ли ваше использование нормальным. С моим собственным VPS-провайдером у меня свободно 24 МБ / 512 м, и он отлично работает. При необходимости он выгружает почти 400 МБ кэшированных данных.