Skip to content
Snippets Groups Projects
Commit c3eb7dd9 authored by Erik Johnston's avatar Erik Johnston
Browse files

Add config option to set the soft fd limit on start

parent 63c1f4fa
Branches
Tags
No related merge requests found
......@@ -52,6 +52,7 @@ import synapse
import logging
import os
import re
import resource
import subprocess
import sqlite3
import syweb
......@@ -269,6 +270,15 @@ def get_version_string():
return ("Synapse/%s" % (synapse.__version__,)).encode("ascii")
def change_resource_limit(soft_file_no):
try:
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
resource.setrlimit(resource.RLIMIT_NOFILE, (soft_file_no, hard))
logger.info("Set file limit to: %d", soft_file_no)
except (ValueError, resource.error) as e:
logger.warn("Failed to set file limit: %s", e)
def setup():
config = HomeServerConfig.load_config(
"Synapse Homeserver",
......@@ -345,10 +355,11 @@ def setup():
if config.daemonize:
print config.pid_file
daemon = Daemonize(
app="synapse-homeserver",
pid=config.pid_file,
action=run,
action=lambda: run(config),
auto_close_fds=False,
verbose=True,
logger=logger,
......@@ -356,11 +367,14 @@ def setup():
daemon.start()
else:
reactor.run()
run(config)
def run():
def run(config):
with LoggingContext("run"):
if config.soft_file_limit:
change_resource_limit(config.soft_file_limit)
reactor.run()
......
......@@ -31,6 +31,7 @@ class ServerConfig(Config):
self.webclient = True
self.manhole = args.manhole
self.no_tls = args.no_tls
self.soft_file_limit = args.soft_file_limit
if not args.content_addr:
host = args.server_name
......@@ -77,6 +78,12 @@ class ServerConfig(Config):
"content repository")
server_group.add_argument("--no-tls", action='store_true',
help="Don't bind to the https port.")
server_group.add_argument("--soft-file-limit", type=int, default=0,
help="Set the limit on the number of file "
"descriptors synapse can use. Zero "
"is used to indicate synapse should "
"not change the limit from system "
"default.")
def read_signing_key(self, signing_key_path):
signing_keys = self.read_file(signing_key_path, "signing_key")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment