diff options
author | David Baker <dave@matrix.org> | 2015-05-07 09:33:42 +0100 |
---|---|---|
committer | David Baker <dave@matrix.org> | 2015-05-07 09:33:42 +0100 |
commit | 97a64f3ebeaac9d9e97699f41751e272fc0c1c73 (patch) | |
tree | 30369edfc0af5da6f41f32932936ec363e844787 /synapse/app/homeserver.py | |
parent | Typo (diff) | |
parent | Optional profiling using cProfile (diff) | |
download | synapse-97a64f3ebeaac9d9e97699f41751e272fc0c1c73.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into develop
Diffstat (limited to 'synapse/app/homeserver.py')
-rwxr-xr-x | synapse/app/homeserver.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py index d8d0df7e41..c227265190 100755 --- a/synapse/app/homeserver.py +++ b/synapse/app/homeserver.py @@ -496,11 +496,31 @@ class SynapseSite(Site): def run(hs): + PROFILE_SYNAPSE = False + if PROFILE_SYNAPSE: + def profile(func): + from cProfile import Profile + from threading import current_thread + + def profiled(*args, **kargs): + profile = Profile() + profile.enable() + func(*args, **kargs) + profile.disable() + ident = current_thread().ident + profile.dump_stats("/tmp/%s.%s.%i.pstat" % ( + hs.hostname, func.__name__, ident + )) + + return profiled + + from twisted.python.threadpool import ThreadPool + ThreadPool._worker = profile(ThreadPool._worker) + reactor.run = profile(reactor.run) def in_thread(): with LoggingContext("run"): change_resource_limit(hs.config.soft_file_limit) - reactor.run() if hs.config.daemonize: |