Openvz - Unable to fork: Cannot allocate memory

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Перейти к:навигация, поиск


Openvz - Unable to fork: Cannot allocate memory

# vzctl enter 17553
entered into CT 17553
-bash: fork: Cannot allocate memory
# cat /proc/user_beancounters | more
Version: 2.5
      uid  resource                     held              maxheld              barrier                limit              failcnt
   17553:  kmemsize                 23031949             26468352             52145203             57359723                    0
           lockedpages                     0                    0                 2546                 2546                    0
           privvmpages                375806               383842              1048576              2097152                    1
           shmpages                     8131                 8803                32530                32530                    0
           dummy                           0                    0  9223372036854775807  9223372036854775807                    0
           numproc                        64                   93                  300                  300                    0
           physpages                  134024               140323                    0               524288                   77
           vmguarpages                     0                    0               524288               524288                    0
           oomguarpages               121028               121425               524288               524288                   47
           numtcpsock                     20                   59                99999                99999                    0
           numflock                       28                   69                 1000                 1100                    0
           numpty                          1                    1                  127                  127                    0
           numsiginfo                      0                   27                 1024                 1024                    0
           tcpsndbuf                  453440              3450280            409595904            409595904                    0
           tcprcvbuf                  327680               966656            409595904            409595904                    0
           othersockbuf                32368              2132096              6085811             11295923                    0
           dgramrcvbuf                     0                 8720              6085811              6085811                    0
           numothersock                   56                   94                99999                99999                    0
           dcachesize                6562886             11722725             11381312             11722752                    0
           numfile                       710                 1135                99999                99999                    0
           dummy                           0                    0  9223372036854775807  9223372036854775807                    0
           dummy                           0                    0  9223372036854775807  9223372036854775807                    0
           dummy                           0                    0  9223372036854775807  9223372036854775807                    0
           numiptent                      20                   20                  512                  512                    0


Увеличиваем лимит выделения памяти, в страницах памяти

# vi /etc/vz/conf/17553.conf
PRIVVMPAGES="1048576:2097152"
PRIVVMPAGES="1048576:unlimited"
# vzctl restart 17553

Описание параметров:

numproc - Максимальное количество процессов. При превышении, ядро будет отказывать в создании нового процесса.
kmemsize - Размер неподкачиваемой памяти, выделяемой ядром операционной системы.
vmguarpages - Количество страниц памяти, которые Вам гарантированы для выделения. Смотрите пояснение ниже о том, что такое страницы памяти. Это лимит, который Вам будет доступен всегда. Или почти всегда, смотрите oomguarpages.
oomguarpages - Гарантированное количество памяти, выделяемое в случае, если память "перегружена" (гарантия от уничтожения при нехватке памяти). Измеряется в страницах памяти, смотрите ниже. В случае, когда ядро сталкивается с ситуацией, когда VPS`ами запрашивается больше памяти, чем имеется физически, то происходит ошибка out of memory. Данный параметр показывает, сколько гарантированно будет выделено страниц памяти для VPS в этом случае.
privvmpages - Лимит выделения памяти, в страницах памяти, смотрите ниже. Ядро никогда не выделит памяти больше, чем доступно по этому параметру. Также, если параметр vmguarpages меньше чем privvmpages, то это значит, что Вам может быть доступно одно количество страниц памяти, но гарантированны только часть из них, и ядро может выделять или не выделять их по своему усмотрению согласно текущей нагрузке на сервер. Это включает как Ram так и Swap память.
physpages - Показывается только через /proc/user_beancounters, так как это не лимит. Данный параметр показывает реально используемое в данный момент времени количество страниц памяти.
numfile - Максимальное количество одновременно открытых файлов.
numiptent - Число записей NETFILTER (фильтрация IP пакетов). Если Вы планируете использовать iptables, то это должно быть достаточно большое число. Например, firewall APF по умолчанию требует минимум 256, а для нормальной работы не менее 512.
Прим. Множество параметров указано в страницах памяти, перевести это число в обычные Мб достаточно просто по этой формуле: x * 4 / 1024 , где x - это количество страниц памяти.


нормальные настройки для контейнера:

KMEMSIZE="unlimited"
LOCKEDPAGES="unlimited"
PRIVVMPAGES="unlimited" 
SHMPAGES="unlimited"
NUMPROC="unlimited"
PHYSPAGES="0:196608"
VMGUARPAGES="unlimited"
OOMGUARPAGES="unlimited"
NUMTCPSOCK="unlimited"
NUMFLOCK="unlimited"
NUMPTY="unlimited"
NUMSIGINFO="unlimited"
TCPSNDBUF="unlimited"
TCPRCVBUF="unlimited" 
OTHERSOCKBUF="unlimited"
DGRAMRCVBUF="unlimited"
NUMOTHERSOCK="unlimited"
DCACHESIZE="unlimited"
NUMFILE="unlimited"
AVNUMPROC="unlimited"
NUMIPTENT="unlimited"