Память VPS истощена даже при легких настройках

Память VPS истощена даже при легких настройках

Linux noob здесь. У меня есть 256 МБ VPS на сервере Ubuntu 11.04, и когда я запускаю "free -m", результат показывает, что вся память используется (включая вторую строку re: buffers/cache). Я нашел это очень странным, учитывая, что у меня запущено всего 5 процессов Apache, каждый из которых потребляет около 20 МБ. MYSQL занимает 30 МБ. Насколько мне известно, и согласно "top", у меня нет других работающих пожирателей памяти.

Настройки, которые могут иметь значение:

PHP memory_limit = 32M
MYSQL key_buffer = 16M
Prefork MPM Maxclients = 10

Итак, когда я просмотрел эти настройки, я, естественно, подумал, что maxclients слишком высок, поэтому я попробовал переключить его на 5. Теперь не только моя память по-прежнему отображается как используемая на 100%, но и мой сайт загружается намного, намного медленнее, несмотря на то, что в данный момент не получает никакого трафика, кроме моего. Я этого не понимаю. Я думал, что один процесс Apache обрабатывает все запросы от клиента, полученные в течение окна «KeepAliveTimeout», которое я установил на 2 секунды. С моей первоначальной конфигурацией 10 maxclients время загрузки моей страницы составляет около 0,3 мс, поэтому один процесс должен справиться с этим без проблем, верно?

Итак, затем я перешел на экстремальный уровень 1 для maxclients. Моя память все еще на 100% загружена, и мой сайт загружается мучительно медленно. Я новичок в полной растерянности. Согласно многочисленным руководствам, которые я прочитал по базовой настройке сервера, я должен быть готов к работе.

Помоги пожалуйста!

Edit:
             total       used       free     shared    buffers     cached
Mem:           256        256          0          0          0          0
-/+ buffers/cache:        256          0
Swap:            0          0          0

решение1

Это связано с тем, что Linux использует большую часть памяти в качестве кэша и возвращает ее части по мере необходимости любому запускаемому вами приложению.

Так что не паникуйте.Все в порядке. Верните MaxClients к значениям по умолчанию.

EDIT: похоже, вы работаете на OpenVZ. См. ответ Дэвида Шварца ниже.

решение2

У вас нет подкачки, что сильно затрудняет сохранение физической памяти для ОС. По сути, у нее нет места для хранения данных, к которым, скорее всего, никогда не будет доступа, но она не может доказать, что к ним никогда не будет доступа. Поэтому у нее нет выбора, кроме как хранить их в оперативной памяти.

Рассмотрим, например, службу, которая запускается при запуске вашего сервера, но к которой никогда, никогда не обращаются. Она может ссылаться на библиотеку, которая перемещается. Это перемещение загрязняет кодовые страницы в памяти. При запуске она, скорее всего, выделит некоторую память и изменит ее содержимое. С помощью swap, после того как служба долго не работает или когда памяти мало, эти страницы могут быть вытеснены из памяти и сохранены в swap. (Скорее всего, они никогда не будут извлечены, но ядро ​​не может рисковать этим — рассмотрите такую ​​службу, как ssh!)

Без подкачки ядро ​​не может вытеснить грязные страницы, даже если к ним не обращались в течение нескольких дней. Поэтому драгоценная физическая память заполняется бесполезным мусором.

Обновлять: Судя по всему, это артефакт OpenVZ. Есть подкачка, и цифры памяти, которые вы видите, бессмысленны. Ваши проблемы с производительностью могут быть или не быть вызваны чем-то, что находится под вашим контролем.

Связанный контент