What exactly is the impact of connectionWatchPeriod?
Martin Ba via omniORB-list <[email protected]> Wed, 6 Apr 2022 13:20:40 +0200
| Newsgroups | gmane.comp.corba.omniorb.user |
|---|---|
| Message-ID | <[email protected]> |
Hi! Context: * omniORB 4.2.4 on Windows * Windows Application servicing a single client application We recently hit some communication delays with omniORB when we had a call sequence roughly like this: 1. server invokes callback (oneway) function on client 2. client does several upcalls from within its callback, but these calls are sequenced in a 50ms raster on the server thread servicing them. (Even though ping is < 2ms) In production we hit these delays correlating to the [`connectionWatchPeriod`][1] setting and sure enough, reducing it from its default of 50ms to 1ms resolved our problem. We have not been able to synthesize the issue in development, but it was reproducible in production. Now, the [docs][1] for `connectionWatchPeriod` and especially `connectionWatchImmediate` go into some details as to what the issue was. This makes sense so far. > ... the connection is not actually watched until the next > connection watch period (determined by the `connectionWatchPeriod` > parameter) ... My "problem" now is that we cannot reproduce the problem in an isolated environment and we do not fully grok what the impact of lowering the connectionWatchPeriod is. Specifically, I found only one reference to this setting in a [message on the list from 2010][2]: > ... > The default timeout is 50 milliseconds, which is a good compromise > between responsiveness and low processing overhead for most > applications. You can change that by setting the connectionWatchPeriod > to a different value. > ... With that, all could be said, and lowering this value indeed solves our problem while not really indicating any more CPU consumption on a normal Windows 10 machine. *However*, the fact that we are not able to reproduce it outside of production -- I tried setting the watch period to 500+ms and still couldn't reproduce any delays -- makes me think we might be missing something here. Can anyone offer some insights on the following points: * Would lowering the watch period from 50ms to 1ms have any noticeable impact given that our CORBA server deals with at most one client at the time? * (!) Is there a sure way to reproduce a "hanging" call caused by connectionWatchPeriod * The docs state that connectionWatchImmediate is meaningless on Windows - is this still accurate? * Are there any other settings that should be changed in this context? Thanks! - Martin [1] : http://omniorb.sourceforge.net/omni42/omniORB/omniORB004.html [2] : https://www.omniorb-support.com/pipermail/omniorb-list/2010-November/030823.html