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

Мой сервер меняет местами, как это исправить?

Я использую для своего сайта хостинг slicehost.com 256MB.

К сожалению, он меняет местами почти все время. Когда я набираю в консоли free я получаю что-то вроде:

            total       used       free     shared    buffers     cached
Mem:        251140     228968      22172          0        596      17356
-/+ buffers/cache:     211016      40124
Swap:       524284      60944     463340

Если я reboot сервер, обмен останавливается на некоторое время, а затем начинается снова.

Как я могу:

1) выяснить, какие процессы / функции вызывают замену

2) Как решить проблему

3) выяснить, не слишком ли мало 256 МБ и пришло время для обновления, а не для оптимизации

Спасибо

// используя CakePHP / apache

1) Попробуйте ps aux и глядя на /proc/$pid/status и /proc/$pid/smaps

2) Добавьте больше памяти.

3) 256 МБ явно слишком мало для вашей текущей нагрузки.

Для диагностики, кто воюет, предлагаю установить наверху. Atop покажет вам изменения на уровне процесса. Для быстрой демонстрации я заставил MySQL использовать всю доступную память, а затем работал с некоторыми большими файлами, чтобы заставить память MySQL быть замененной на кэширование моих больших тестовых файлов. Ниже приведен снимок экрана, на котором MySQL пытается прочитать память обратно из подкачки (изображение вместо текста, чтобы вы могли видеть основные моменты).

Обратите внимание на числа majflt и minflt, когда MySQL пытается достичь чего-то, что было заменено. Вы также можете увидеть другую статистику памяти и действительно все, что вы когда-либо хотели получить сверху, ps и т. Д. {apt-get, yum} установить поверх.

Вы используете Apache?

если да, сделайте следующее:

  • Открытый верх (просто введите верх на терминале)
  • Нажмите Shift M, чтобы упорядочить по потреблению памяти
  • В столбце RES вы можете увидеть, сколько памяти резервируют ваши экземпляры apache.

Допустим, вы потребляете 20 МБ на процесс.

Затем выполните простую математику. отложите 156 МБ для SO, а остальные 100 разделите на объем памяти, который потребляет один apache: 100/20 = 5

Это даст вам, сколько процессов apache вы можете иметь одновременно.

Затем перейдите в конфигурацию apache (/ etc / apache2) и найдите в основном файле конфигурации следующие настройки: - StartServers - ServerLimit - MaxClients

И установите их все на 5.

Имейте в виду, что 256 - это слишком мало для установки apache. Я бы не стал запускать apache с объемом памяти менее 2 ГБ.

  1. Это PHP.

  2. Добавьте больше памяти или уменьшите количество одновременных процессов PHP

  3. Это не много.

Вы можете уменьшить подкачку, сначала проверьте текущее значение с помощью cat / proc / sys / vm / swappiness затем измените значение sysctl -w vm.swappiness = 10

Также вы всегда можете отключить своп с помощью sudo swapoff a или редактируя / etc / fstab

В настоящее время я редко использую свопинг, даже в такой маленькой виртуальной машине, как ваша.

Вы можете заставить Apache использовать меньше памяти, но это будет непросто.

  • Отключите второстепенные службы на своем сервере.
  • Использовать рабочий модуль MPM с PHP как FastCGI (несовместим с PHP как модуль).
  • Настройте рабочий модуль на использование умеренного количества MaxClients (например, MaxClients 64) и умеренное количество потоков (например, ThreadsPerChild 32).
  1. Почему бы вам не попытаться выяснить, какие процессы съедают сколько памяти, когда происходит тяжелая подкачка, выполнив команду

    верхняя

  2. После определения того, какой процесс занимает полезную часть памяти, следует сделать первый шаг к тому, как решить проблему. например. если запрос mysql занимает слишком много памяти, возможно, вы решили ограничить память сервера mysql или, может быть, вы выполняете оптимизацию запроса

  3. ну 256МБ действительно кажется маленьким. Поскольку вы упомянули apache, и я знаю, что apache по умолчанию поставляется с предварительным режимом работы, он может быть настоящим виновником. Рассмотрите возможность запуска apache в рабочем режиме с запущенными только необходимыми модулями (обычно apache поставляется с множеством модулей, запускаемых автоматически) или заменой apache на облегченный Nginx.