Header Ads

Squid Memory Warning

Un mensaje recurrente que encontramos en cache.log de Squid es:
ERROR: 'high_memory_warning' requires GNU Malloc with mstats ()
Lo anterior se debe a una directiva llamada " high_memory_warning". Su descripción en squid.conf:
#  TAG: high_memory_warning
# Note: This option is only available if Squid is rebuilt with the
#       GNU Malloc with mstats()
#
# If the memory usage (as determined by gnumalloc, if available and used)
# exceeds this amount, Squid prints a WARNING with debug level 0 to get
# the administrators attention.
# Default:
# disabled
Como podemos observar viene deshabilitada por defecto. Para activarla agregamos la línea:
high_memory_warning number
Donde "number" valor a asignar (ej: 1024, 2048, etc.). Ejemplo:
high_memory_warning 2048
Cuando ponemos en esta directiva un valor distinto a cero (0), Squid comprueba periódicamente el tamaño del proceso. Para obtener el tamaño del proceso, Squid usa mstats (), mallinfo () o sbrk (), lo cual requiere de  GNU Malloc with mstats y habría que compilar usando GNU malloc o dlmalloc, de acuerdo al procedimiento descrito en la  página oficial.
Resumiendo, si el proceso supera el umbral que establecimos en la directiva, Squid imprimirá el mensaje de advertencia en cache.log (con nivel de depuración 0), y si ocurre con frecuencia nuestro cache.log se inundará con estos mensajes (como en la imagen al principio del post). Pero este no es el único problema; si el tamaño del proceso es demasiado grande, puede provocar fallas y la degradación del rendimiento, por tanto si no es una directiva que requiera con imperiosa necesidad, se recomienda dejarla deshabilitada.
Con la tecnología de Blogger.