This repository was archived by the owner on Apr 26, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +17
-2
lines changed
Expand file tree Collapse file tree 4 files changed +17
-2
lines changed Original file line number Diff line number Diff line change 1+ Use jemalloc if available in docker.
Original file line number Diff line number Diff line change @@ -69,6 +69,7 @@ RUN apt-get update && apt-get install -y \
6969 libpq5 \
7070 libwebp6 \
7171 xmlsec1 \
72+ libjemalloc2 \
7273 && rm -rf /var/lib/apt/lists/*
7374
7475COPY --from=builder /install /usr/local
Original file line number Diff line number Diff line change @@ -204,3 +204,8 @@ healthcheck:
204204 timeout: 10s
205205 retries: 3
206206```
207+
208+ ## Using jemalloc
209+
210+ Jemalloc is embedded in the image and will be used instead of the default allocator.
211+ You can read about jemalloc by reading the Synapse [ README] ( ../README.md )
Original file line number Diff line number Diff line change 33import codecs
44import glob
55import os
6+ import platform
67import subprocess
78import sys
89
@@ -213,6 +214,13 @@ def main(args, environ):
213214 if "-m" not in args :
214215 args = ["-m" , synapse_worker ] + args
215216
217+ jemallocpath = "/usr/lib/%s-linux-gnu/libjemalloc.so.2" % (platform .machine (),)
218+
219+ if os .path .isfile (jemallocpath ):
220+ environ ["LD_PRELOAD" ] = jemallocpath
221+ else :
222+ log ("Could not find %s, will not use" % (jemallocpath ,))
223+
216224 # if there are no config files passed to synapse, try adding the default file
217225 if not any (p .startswith ("--config-path" ) or p .startswith ("-c" ) for p in args ):
218226 config_dir = environ .get ("SYNAPSE_CONFIG_DIR" , "/data" )
@@ -248,9 +256,9 @@ def main(args, environ):
248256 args = ["python" ] + args
249257 if ownership is not None :
250258 args = ["gosu" , ownership ] + args
251- os .execv ("/usr/sbin/gosu" , args )
259+ os .execve ("/usr/sbin/gosu" , args , environ )
252260 else :
253- os .execv ("/usr/local/bin/python" , args )
261+ os .execve ("/usr/local/bin/python" , args , environ )
254262
255263
256264if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments