OpenVZ Forum


Home » International » Russian » Виртуалке явно не хватает памяти
Виртуалке явно не хватает памяти [message #38667] Thu, 14 January 2010 09:56 Go to next message
Artemiy117 is currently offline  Artemiy117
Messages: 11
Registered: January 2010
Junior Member
Создал виртуалку на Debian i386
Выделил ей квоту в 30% проца от 2-х Xeon'ов и 512 Mb оперативки.
Водрузил на неё Apache2+MySQL+PHP5+vsftpd
Кинул на неё два сайта с хорошей посещаемостью.
И утром началось. Cannot allocate memory и все такое.
Пришлось увеличить privvmpages в два раза.
Вот что пишет:
Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
        1:  kmemsize                  5896578             14965798             41625840             61405600                    0
            lockedpages                     0                   96                  256                  256                    2

            privvmpages                110038               279368               262144               278528                 7429

            shmpages                      656                 1312                21504                21504                    0
            dummy                           0                    0                    0                    0                    0
            numproc                        51                  108                  240                  240                    0
            physpages                   33886                71506                    0  9223372036854775807                    0
            vmguarpages                     0                    0               131072  9223372036854775807                    0
            oomguarpages                33886                71506                26112  9223372036854775807                    0
            numtcpsock                     13                   81                  360                  360                    0
            numflock                        6                   11                  188                  206                    0
            numpty                          1                    2                   16                   16                    0
            numsiginfo                      0                   37                  256                  256                    0
            tcpsndbuf                  205512               920816              1720320              2703360                    0
            tcprcvbuf                  167472               357136              1720320              2703360                    0

            othersockbuf               148960               845440              1126080              2097152                   56

            dgramrcvbuf                     0                 4360               262144               262144                    0

            numothersock                  113                  130                  140                  140                  154

            dcachesize                 490158               617862              3409920              3624960                    0
            numfile                      1126                 1661                 9312                 9312                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            numiptent                      10                   10                  128                  128                    0


Вопрос: можно её как-то заставить работать на 512 мегах оперативки и что для этого нужно сделать с виртуалкой?

numothersock я поднимал с 120 до 140.
Я правильно понимаю, что нужно добиться чтобы в идеале failcnt стремился к нулю?
Re: Виртуалке явно не хватает памяти [message #38693 is a reply to message #38667] Sat, 16 January 2010 15:34 Go to previous messageGo to next message
RXL_ is currently offline  RXL_
Messages: 147
Registered: July 2009
Location: Moscow/Russia
Senior Member
Отграничивать Apache, PHP и MySQL по используемой памяти.
Для Апача - снизить число процессов, для PHP - выставить лимит памяти на процесс, для MySQL - задать максимум подключений и пересмотреть размеры буферов.

Снизить нагрузку на связку Apache/PHP можно поставив reverse proxy, например - Nginx. Прокси задать правила отдавать статичные файлы, а запросы к динамическим данным переадресовывать к Apache.
Снижению нагрузки отчасти способствует кеш предкомпиленных файлов PHP: APC или eAccelerator. Но как любой кеш, он тоже потребляет память (регулируется).

Прежде чем вносить любое изменение следует собрать статистику посещаемости, максимальное число одновременных процессов Apache, одновременных сессий MySQL. Также стоит помониторить - кто из сервисов сколько памяти потребляет.


... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

[Updated on: Sat, 16 January 2010 15:36]

Report message to a moderator

Re: Виртуалке явно не хватает памяти [message #38696 is a reply to message #38667] Sat, 16 January 2010 17:06 Go to previous messageGo to next message
Artemiy117 is currently offline  Artemiy117
Messages: 11
Registered: January 2010
Junior Member
В основном в процессах первые строчки занимает MySQL.

top - 20:00:54 up 1 day, 19:21,  1 user,  load average: 0.14, 0.12, 0.09
Tasks:  34 total,   1 running,  33 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.2%us,  0.2%sy,  0.0%ni, 96.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,   433480k used,   615096k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19382 www-data  20   0 34736 9524 4080 S    8  0.9   0:01.98 apache2
  390 mysql     20   0  130m  51m 5392 S    2  5.1  60:26.53 mysqld


Рою в инете как ему гайки закрутить. Хоть это и оффтоп, но может кто поделится опытом или ссылку какую даст?
Переводить все на Nginx нет никакого желания. Я в первом посте написал, что хочу эту связку заставить работать на 512Mb. Но за советы все равно спасибо.
Re: Виртуалке явно не хватает памяти [message #38698 is a reply to message #38696] Sat, 16 January 2010 21:37 Go to previous message
RXL_ is currently offline  RXL_
Messages: 147
Registered: July 2009
Location: Moscow/Russia
Senior Member
Анализ и еще раз анализ!

Прежде всего, запретите загрузку всех ненужных модулей Apache и PHP и перезапустите Apache.
Анализ начните с PHP: определите, сколько памяти достаточно вашим web-приложениям (МБ на процесс)? От этой величины можно уже предположить, сколько процессов Apacha можно запустить и сколько подключений MySQL потребуется.


... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Previous Topic: Несколько теоретических вопросов
Next Topic: Обсуждение в рассылке [Users] New Kernel Patch
Goto Forum:
  


Current Time: Thu Jun 19 20:36:18 GMT 2025

Total time taken to generate the page: 0.03112 seconds