10

Попробуй yum install php56w-mcrypt и система выдаст мне эту ошибку

libmcrypt-2.5.8-13.el7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory
php56w-mcrypt-5.6.5-1.w7.x86_64: [Errno 5] [Errno 12] Cannot allocate memory

Я проверил free -m

             total       used       free     shared    buffers     cached
Mem:           490        421         68          8          3         42
-/+ buffers/cache:        376        113
Swap:            0          0          0

top

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 9756 mysql     20   0  727588  81556      0 S  0.3 16.2   1:04.61 mysqld
11089 root      20   0       0      0      0 S  0.3  0.0   0:16.25 kworker/0:2
    1 root      20   0  129396   2020    576 S  0.0  0.4   0:05.88 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:00.16 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S  0.0  0.0   0:01.82 rcu_sched
   11 root      20   0       0      0      0 R  0.0  0.0   0:02.10 rcuos/0
   12 root      rt   0       0      0      0 S  0.0  0.0   0:00.91 watchdog/0
   13 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 khelper
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   15 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd

Не уверен, где еще проверить.

Я использую DigitalOcean VPS с оперативной памятью 512 МБ, план $ 5/ месяц.

2 ответа2

14

Вы можете создать файл подкачки:

fallocate -l 512M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Это создаст файл подкачки, и вы сможете устанавливать приложения. Чтобы удалить файл подкачки:

swapoff -a
rm -f /swapfile

см. Arch wiki для деталей.

6

Эта проблема заключается в том, что сервер имеет только 490 МБ ОЗУ на компьютере, и у вас используется 421 МБ. Оставляя только 68 МБ бесплатно; это не много памяти для любой системы для работы.

Глядя на вывод top видно, что виновником является MySQL (aka: mysqld).

Лучшее, что вы можете сделать, если это временная ситуация, это просто остановить MySQL следующим образом:

sudo service mysqld stop

Затем, остановив MySQL, вы можете запустить yum install как положено.

Но другим решением было бы использование сценария, такого как «MySQL Tuning Primer», чтобы помочь оценить использование и конфигурацию MySQL на подаче и настроить соответствующим образом. Причина в том, что простой MySQL, встроенный в MySQL, станет проблемой с памятью. Но «MySQL Tuning Primer» поможет оценить вашу установку и даст вам знать, что вы можете настроить. В том числе снижение требований к памяти, так что установка может быть довольна вашими ограниченными ресурсами. Единственный улов - MySQL должен быть запущен в течение как минимум 48 часов подряд, чтобы результаты «MySQL Tuning Primer» чего-то стоили. Кроме того, настройка производительности MySQL с помощью этого скрипта - отличный способ отрегулировать настройки LAMP.

Кроме того, поскольку вы используете Apache, вы, вероятно, можете снизить требования к оперативной памяти для Apache (или httpd), чтобы таким образом освободить больше оперативной памяти. Это довольно общий набор настроек для базовой среды разработки Apache, но он должен вам помочь. Сначала откройте конфигурацию Apache через ваш любимый редактор командной строки, как этот; Я предпочитаю nano но любой текстовый редактор хорош:

sudo nano /etc/httpd/conf/httpd.conf 

Теперь найдите строку с надписью Timeout и измените ее на «120»; две минуты - это разумное время ожидания:

Timeout 120

Аналогичным образом найдите MaxKeepAliveRequests и измените его на «24»; «Поддержите в живых» соединения хороши, но не позволяйте им нарушать ваши настройки:

MaxKeepAliveRequests 24

Найдите KeepAliveTimeout и установите для него значение «2»; это должно соответствовать скорости загрузки одной страницы на вашем сайте и средней продолжительности 2 секунды:

KeepAliveTimeout 2

Теперь найдите директиву конфигурации XML, установленную как <IfModule mpm_prefork_module>:

<IfModule mpm_prefork_module>
  StartServers           8
  MinSpareServers       16
  MaxSpareServers       32
  ServerLimit           40
  MaxClients            40
  MaxRequestsPerChild 2000
</IfModule>

Ключом к этому является ServerLimit и MaxClients . По умолчанию настройки Apache довольно высоки; 255 для MaxClients я верю. Но реальность такова, что даже сайт с высоким трафиком будет получать только 70-80 соединений в секунду ... А потом умрет ... Это означает, что соединения Apache не имеют состояния, поэтому эталоном является число соединений в секунду. Таким образом, для сервера разработки или небольшого масштаба «40» - это хорошее число.

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

sudo service httpd restart

Настройка MySQL и Apache на более разумные настройки, чем стандартные / стандартные значения, может освободить ресурсы на вашем сервере и заставить все работать более гладко.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .