From d1dd14395259b78ed356b26ca07c54ba22034aaa Mon Sep 17 00:00:00 2001 From: Caleb Tennis Date: Fri, 27 Dec 2013 17:38:34 -0500 Subject: [PATCH] Up nproc limit on startup. Separate out setrlimit calls for specific exception handling. Closes-Bug: #1264561 Change-Id: I5588f19f8d0393409580d17317727977758d5cb3 --- swift/common/manager.py | 15 ++++++++++++++- test/unit/common/test_manager.py | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/swift/common/manager.py b/swift/common/manager.py index 900a5419a0..f345e28fec 100644 --- a/swift/common/manager.py +++ b/swift/common/manager.py @@ -48,6 +48,7 @@ WARNING_WAIT = 3 # seconds to wait after message that may just be a warning MAX_DESCRIPTORS = 32768 MAX_MEMORY = (1024 * 1024 * 1024) * 2 # 2 GB +MAX_PROCS = 8192 # workers * disks * threads_per_disk, can get high def setup_env(): @@ -56,10 +57,22 @@ def setup_env(): try: resource.setrlimit(resource.RLIMIT_NOFILE, (MAX_DESCRIPTORS, MAX_DESCRIPTORS)) + except ValueError: + print _("WARNING: Unable to modify file descriptor limit. " + "Running as non-root?") + + try: resource.setrlimit(resource.RLIMIT_DATA, (MAX_MEMORY, MAX_MEMORY)) except ValueError: - print _("WARNING: Unable to increase file descriptor limit. " + print _("WARNING: Unable to modify memory limit. " + "Running as non-root?") + + try: + resource.setrlimit(resource.RLIMIT_NPROC, + (MAX_PROCS, MAX_PROCS)) + except ValueError: + print _("WARNING: Unable to modify max process limit. " "Running as non-root?") # Set PYTHON_EGG_CACHE if it isn't already set diff --git a/test/unit/common/test_manager.py b/test/unit/common/test_manager.py index 908af73c2d..035336ba4a 100644 --- a/test/unit/common/test_manager.py +++ b/test/unit/common/test_manager.py @@ -105,6 +105,8 @@ class TestManagerModule(unittest.TestCase): manager.MAX_DESCRIPTORS)), (resource.RLIMIT_DATA, (manager.MAX_MEMORY, manager.MAX_MEMORY)), + (resource.RLIMIT_NPROC, (manager.MAX_PROCS, + manager.MAX_PROCS)), ] self.assertEquals(manager.resource.called_with_args, expected) self.assertTrue(