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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: похоже, что вы работаете на OpenVZ. См. Ответ Дэвида Шварца ниже.

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

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

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

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