From 5e321af2edac0146acca2231f7624ab5357c58e7 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Thu, 20 Oct 2016 10:50:58 -0600 Subject: [PATCH] cluser/addons: fluentd-elasticsearch: preload Jemalloc for td-agent 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/dVYTmw Signed-off-by: Eduardo Silva --- .../addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile index 2581f54dd03..77731097841 100644 --- a/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile +++ b/cluster/addons/fluentd-elasticsearch/fluentd-es-image/Dockerfile @@ -38,5 +38,7 @@ COPY td-agent.conf /etc/td-agent/td-agent.conf COPY build.sh /tmp/build.sh RUN /tmp/build.sh +ENV LD_PRELOAD /opt/td-agent/embedded/lib/libjemalloc.so + # Run the Fluentd service. ENTRYPOINT ["td-agent"]