• Eduardo Silva's avatar
    cluser/addons: fluentd-elasticsearch: preload Jemalloc for td-agent · 5e321af2
    Eduardo Silva authored
    The current DockerFile build an image using td-agent package but it let
    the service run with the default memory allocator provided by glibc.
    
    In high load environments, is highly required to use a customized memory
    allocator such as Jemalloc. Otherwise the service will face a high memory
    fragmentation ending up in 'high memory' usage from a monitoring perspective.
    
    td-agent package by default install Jemalloc and set the LD_PRELOAD
    environment variable through it init script, but since the service is
    launched through Docker the env variable needs to be set manually.
    
    After this patch, when running td-agent container image now is possible
    to see that Jemalloc is used:
    
      root@monotop:/proc/18810# cat maps |grep jemall
      7f251eddd000-7f251ee1b000 ... /opt/td-agent/embedded/lib/libjemalloc.so.2
      7f251ee1b000-7f251f01b000 ... /opt/td-agent/embedded/lib/libjemalloc.so.2
      7f251f01b000-7f251f01d000 ... /opt/td-agent/embedded/lib/libjemalloc.so.2
      7f251f01d000-7f251f01e000 ... /opt/td-agent/embedded/lib/libjemalloc.so.2
    
    For a reference about the memory usage difference between malloc v/s jemalloc
    please refer to the following chart:
    
      https://goo.gl/dVYTmwSigned-off-by: 's avatarEduardo Silva <eduardo@treasure-data.com>
    5e321af2
Dockerfile 1.62 KB