Error: Fork failed - Cannot allocate memory

Created:

2016-11-16 13:24:34 UTC

Modified:

2017-08-16 03:52:13 UTC

1

Was this article helpful?


Have more questions?

Enviar una solicitud

Error: Fork failed - Cannot allocate memory

Applicable to:

  • Plesk for Linux/Unix

Síntomas

Nota : este artículo únicamente es aplicable a entornos basados en Parallels Virtuozzo Containers.

En /var/log/sw-cp-server/error_log pueden verse muchos errores relacionados con excepciones de memoria insuficiente procedentes del sistema. Por ejemplo:

  (mod_fastcgi.c.2746) FastCGI-stderr: PHP Warning: proc_open() [<a href='function.proc-open'>function.proc-open</a>]: fork failed - Cannot allocate memory; File: /opt/psa/admin/plib/common_func.php3, Line: 1318

   Traceback (most recent call last):
  File "/opt/psa/admin/sbin/pmmcli", line 6, in <module>
pmmcli.main()
  File "/opt/psa/admin/share/pmmcli/pmmcli.py", line 2308, in main
_logger.critical("Runtime error in pmmcli: \n" + str(e.__class__) + " " + str(e) + "\n" +  stacktrace.stacktrace())
  File "/opt/psa/admin/lib/python/stacktrace.py", line 6, in stacktrace
traceback.print_exc(file = trace)
  File "/usr/lib/python2.6/traceback.py", line 227, in print_exc
print_exception(etype, value, tb, limit, file)
  File "/usr/lib/python2.6/traceback.py", line 125, in print_exception
print_tb(tb, limit, file)
  File "/usr/lib/python2.6/traceback.py", line 67, in print_tb
'  File "%s", line %d, in %s' % (filename,lineno,name))
  File "/usr/lib/python2.6/traceback.py", line 13, in _print
file.write(str+terminator)
MemoryError: out of memory

También puede que se observen otros errores como:

 # /usr/local/psa/bootstrapper/pp11.5.30-bootstrapper/bootstrapper.sh repair

 date: write error: Cannot allocate memory /usr/local/psa/bootstrapper/pp11.5.30-bootstrapper/bootstrapper.sh: fork: Cannot allocate memory

O bien:

# /usr/local/psa/admin/bin/nginxmng -s 
PHP Warning: proc_open(): fork failed - Cannot allocate memory; File: /usr/local/psa/admin/plib/common_func.php3, Line: 560


/usr/local/psa/admin/bin/send-error-report: error while loading shared libraries: /lib64/libpthread.so.0: cannot apply additional memory protection after relocation: Cannot allocate memory

Causa

La causa más probable de este problema de memoria es que en el contenedor se haya alcanzado el límite privvmpages . Esto se indica al mostrar un valor que no es cero en la columna "failcnt":

awk '$NF > 0' /proc/user_beancounters

Version: 2.5
    uid resource           held          maxheld       barrier         limit      failcnt
        privvmpages        1954900       5089134       3500000       4000000        93324

En este ejemplo, el límite se ha definido a 4 millones de páginas, lo que equivale a 16G, pero la barrera se ha establecido a 13G. Tal y como indica el valor "maxheld", el consumo máximo de memoria en el contenedor fue de 19,5G. Como consecuencia, el nodo hardware destruyó algunos procesos, ocasionando un comportamiento inesperado.

Nota : puede que el problema no solo resida en aquellos procesos que requieren memoria en el contenedor, sino también en una configuración incorrecta del límite de memoria en el nodo hardware.

Puede que también se hayan excedido otros recursos del contenedor, como por ejemplo kmemsize y numproc .

# egrep 'kmemsize|numproc' /proc/user_beancounters 
72030666: kmemsize 21389702 21893120 20971520 23068672 189 
numproc 86 87 96 96 9 

Resolución

  1. Compruebe que no se han alcanzado los límites del contenedor ( /proc/user_beancounters ).

  2. Verifique que la configuración general de memoria de los contenedores en el nodo hardware es válida, es decir, que la suma de los límites de memoria de todos los contenedores no excede la memoria total disponible en el nodo hardware.
  3. Intente aumentar los recursos para el contenedor. Por ejemplo:

    # vzctl set xxxxx --kmemsize 110000:120000 --save 
    UBC limits were set successfully 
    Saved parameters for Container xxxxx where xxxxx is a container ID on particular hardware node
    
¿Tiene más preguntas? Enviar una solicitud
Inicie sesión para dejar un comentario.