Mark Bergsma has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/256942

Change subject: Make all IdleConnection TCP KeepAlive parameters configurable
......................................................................

Make all IdleConnection TCP KeepAlive parameters configurable

This commit creates several configuration options for TCP KeepAlive
in IdleConnection, instead of using the hardcoded values. The default
values have also been changed to be slightly less aggressive.

Change-Id: I1f5e0993f1901def199e0fb4d3790836dc7db2f2
---
M pybal/monitors/idleconnection.py
1 file changed, 12 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/pybal 
refs/changes/42/256942/1

diff --git a/pybal/monitors/idleconnection.py b/pybal/monitors/idleconnection.py
index 5ac7ea0..1c34634 100644
--- a/pybal/monitors/idleconnection.py
+++ b/pybal/monitors/idleconnection.py
@@ -25,7 +25,10 @@
 
     TIMEOUT_CLEAN_RECONNECT = 3
     MAX_DELAY = 300
-    KEEPALIVE_RETRIES = 10
+    KEEPALIVE = True
+    KEEPALIVE_RETRIES = 3
+    KEEPALIVE_IDLE = 10
+    KEEPALIVE_INTERVAL = 30
 
     __name__ = 'IdleConnection'
 
@@ -37,8 +40,10 @@
 
         self.toCleanReconnect = self._getConfigInt('timeout-clean-reconnect', 
self.TIMEOUT_CLEAN_RECONNECT)
         self.maxDelay = self._getConfigInt('max-delay', self.MAX_DELAY)
-        self.keepAliveRetries = self._getConfigInt('keepalive-retries',
-                                                   self.KEEPALIVE_RETRIES)
+        self.keepAlive = self._getConfigBool('keepalive', self.KEEPALIVE)
+        self.keepAliveRetries = self._getConfigInt('keepalive-retries', 
self.KEEPALIVE_RETRIES)
+        self.keepAliveIdle = self._getConfigInt('keepalive-idle', 
self.KEEPALIVE_IDLE)
+        self.keepAliveInterval = self._getConfigInt('keepalive-interval', 
self.KEEPALIVE_INTERVAL)
 
     def run(self):
         """Start the monitoring"""
@@ -96,13 +101,12 @@
         if not self.active:
             return
 
-        if self.transport is not None:
+        if self.transport is not None and self.keepAlive:
             sock = self.transport.getHandle()
             sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
-            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 1)
-            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT,
-                            self.keepAliveRetries)
-            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 1)
+            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 
self.keepAliveIdle)
+            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 
self.keepAliveRetries)
+            sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 
self.keepAliveInterval)
 
         # Set status to up
         self._resultUp()

-- 
To view, visit https://gerrit.wikimedia.org/r/256942
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I1f5e0993f1901def199e0fb4d3790836dc7db2f2
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Mark Bergsma <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to