# HG changeset patch # User Marcin Kuzminski # Date 2019-07-29 10:47:26 # Node ID 4b34b23b030719aed1dd93927c8803058bfbcb98 # Parent 9c4996556d4d7b5cf541bed186eddce9c6f3958b request-wrapper: add gc.collect to every 25th request to clear up memory. - we've indicated that general GC isn't so efficient. Manually triggering it would save lots of memory. diff --git a/vcsserver/tweens/request_wrapper.py b/vcsserver/tweens/request_wrapper.py --- a/vcsserver/tweens/request_wrapper.py +++ b/vcsserver/tweens/request_wrapper.py @@ -15,8 +15,7 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - +import gc import time import logging @@ -40,6 +39,7 @@ class RequestWrapperTween(object): def __init__(self, handler, registry): self.handler = handler self.registry = registry + self.gc_max_requests = 25 # one-time configuration code goes here @@ -56,6 +56,10 @@ class RequestWrapperTween(object): count, '127.0.0.1', request.environ.get('REQUEST_METHOD'), safe_str(get_access_path(request)), total, get_user_agent(request.environ)) + if self.gc_max_requests and count % self.gc_max_requests == 0: + log.info('Performing gc.collect now') + gc.collect() + return response