Archived

This forum has been archived. Please start a new discussion on GitHub.

Connection Monitor

Hello,

I would like your help in understanding nature of certain condition that I am facing.

Preface :

I have created a couple of java services within IceBox and have assigned individual ThreadPools to them.

eg
###
#
# NBasuService1
#
###
IceBox.Service.NBasuService1=com.nb.serviceImpl.NBasuService1
NBasuService1.Endpoints=tcp -p 10010
NBasuService1.ThreadPool.Size=3
NBasuService1.ThreadPool.SizeMax=5
IceBox.UseSharedCommunicator.NBasuService1=1

###
#
# NBasuService2
#
###
IceBox.Service.NBasuService2=com.nb.serviceimpl.NBasuService2
NBasuService2.Endpoints=tcp -p 10011
NBasuService2.ThreadPool.Size=3
NBasuService2.ThreadPool.SizeMax=5
IceBox.UseSharedCommunicator.NBasuService2=1

#IceBox.ServiceManager.ThreadPool.Size=50
#IceBox.ServiceManager.ThreadPool.SizeMax=35
#IceBox.ServiceManager.ThreadPool.SizeMax=20

###
# Ice properties
###
Ice.MessageSizeMax=4096
#Ice.ThreadPool.Server.Size=10
#Ice.ThreadPool.Server.SizeMax=50
#Ice.ThreadPool.Server.SizeWarn=5
#Ice.ThreadPool.Client.Size=20
#Ice.ThreadPool.Client.SizeMax=30
#Ice.ThreadPool.Client.SizeWarn=5
Ice.Default.CollocationOptimization=1
Ice.Warn.Connections=0
Ice.Warn.Dispatch=0
Ice.Trace.Network=0
Ice.Trace.Protocol=0
Ice.ACM.Client=60
Ice.MonitorConnections=120
## Ice.StdOut=icebox.out
Ice.StdErr=icebox.err
Ice.Nohup=1
Ice.Logger.Timestamp=1
Ice.Override.Timeout=-1
Ice.Override.ConnectTimeout=-1

I have a couple of java clients and one c++ client which use the following properties to create the communicator
Ice.Warn.Connections=1
Ice.Trace.Network=0
Ice.Trace.Protocol=0
Ice.ACM.Client=60
Ice.RetryIntervals=0 1000 5000
Ice.Override.Timeout=-1
Ice.Override.ConnectTimeout=30000
Ice.StdErr=ice.err

Dilemna :

When I connect to the IceBox service via jconsole I see multiple Ice.ConnectionMonitor and Ice.ThreadPool.Client threads.

The client calls I make are not too many. Also, after making the service calls I close the communicator.

The threads do not seem to ever die but are increasing every so often.

I have disabled the generic threadpool then why are the threads appearing. Also, I see multiple connection monitor threads. Shouldn't there be only one connection monitor thread? And, shouldn't the idle threads die?

I am using Ice3.1

I would appreciate your input in this matter.

Comments

  • matthew
    matthew NL, Canada
    Please note that you should upgrade to Ice 3.2. We don't provide free support for older versions of Ice. Note that once you upgrade to Ice 3.2 you should also either have separate configurations for each icebox service, or define IceBox.InheritProperties=1 in the IceBox configuration.

    With this setup you described above you'd have only a single communicator which should have a single connection monitor. Each of the adapters should have its own thread pool, as configured, plus you'd have one more for the IceBox service adapter.

    I'd be interested in seeing a list of the things that you think should not be there. A JVM dump would be a good start :)
  • Thanks for getting back to me and apologize for the delay in responding.

    I moved to Ice3.2 and will attempt to replicate the issue I faced earlier. At the second glance I do however see an issue in my code.

    Thanks for your help.