From 7e9b439c1cfedfedb2a94e5a1d8e44a9987f9570 Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Mon, 17 Jan 2011 21:59:59 +0100 Subject: [PATCH 1/2] [FIX] socket: avoids interaction between Nagle and delayed ACK algorithm. By default, ACK delay is 200ms on Windows which terribly slows down conversations between client and server (when deployed on different machines). To avoid any slow down, TCP_NODELAY should be enabled on clients' socket too. More details: http://developers.slashdot.org/comments.pl?sid=174457&threshold=1&commentsort=0&mode=thread&cid=14515105 bzr revid: jth@openerp.com-20110117205959-8kxaz0of8ta9dmfw --- bin/service/netrpc_server.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/service/netrpc_server.py b/bin/service/netrpc_server.py index 9d25c98083a..f991b6a72f6 100644 --- a/bin/service/netrpc_server.py +++ b/bin/service/netrpc_server.py @@ -108,6 +108,8 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): self.__interface = interface self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + # disables Nagle algorithm (avoids 200ms default delay on Windows) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self.socket.bind((self.__interface, self.__port)) self.socket.listen(5) self.threads = [] From 996c6602a4359ad11d08681ca12cc0f2a361f142 Mon Sep 17 00:00:00 2001 From: Julien Thewys Date: Tue, 18 Jan 2011 11:14:41 +0100 Subject: [PATCH 2/2] [FIX] typo bzr revid: jth@openerp.com-20110118101441-tx27olsxkkl3m0vs --- bin/service/netrpc_server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/service/netrpc_server.py b/bin/service/netrpc_server.py index f991b6a72f6..4bcd4dd4954 100644 --- a/bin/service/netrpc_server.py +++ b/bin/service/netrpc_server.py @@ -109,7 +109,7 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # disables Nagle algorithm (avoids 200ms default delay on Windows) - self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) self.socket.bind((self.__interface, self.__port)) self.socket.listen(5) self.threads = []