This repository was archived by the owner on Apr 26, 2024. It is now read-only.
Commit ccf1dc5 1 parent 1383508 commit ccf1dc5 Copy full SHA for ccf1dc5
File tree 4 files changed +17
-2
lines changed
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 \
69
69
libpq5 \
70
70
libwebp6 \
71
71
xmlsec1 \
72
+ libjemalloc2 \
72
73
&& rm -rf /var/lib/apt/lists/*
73
74
74
75
COPY --from=builder /install /usr/local
Original file line number Diff line number Diff line change @@ -204,3 +204,8 @@ healthcheck:
204
204
timeout: 10s
205
205
retries: 3
206
206
```
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 3
3
import codecs
4
4
import glob
5
5
import os
6
+ import platform
6
7
import subprocess
7
8
import sys
8
9
@@ -213,6 +214,13 @@ def main(args, environ):
213
214
if "-m" not in args :
214
215
args = ["-m" , synapse_worker ] + args
215
216
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
+
216
224
# if there are no config files passed to synapse, try adding the default file
217
225
if not any (p .startswith ("--config-path" ) or p .startswith ("-c" ) for p in args ):
218
226
config_dir = environ .get ("SYNAPSE_CONFIG_DIR" , "/data" )
@@ -248,9 +256,9 @@ def main(args, environ):
248
256
args = ["python" ] + args
249
257
if ownership is not None :
250
258
args = ["gosu" , ownership ] + args
251
- os .execv ("/usr/sbin/gosu" , args )
259
+ os .execve ("/usr/sbin/gosu" , args , environ )
252
260
else :
253
- os .execv ("/usr/local/bin/python" , args )
261
+ os .execve ("/usr/local/bin/python" , args , environ )
254
262
255
263
256
264
if __name__ == "__main__" :
You can’t perform that action at this time.
0 commit comments