We are unable to create more than 23oo threads with thread size set to 256k with jdk 1.3.1_04 on Windows 2000. The process virtual address space grows to 1.2GB only and the machine has 2GB physical RAM with 4GB swap space configured.
The application is a Call management server which accepts requests (http, voiceXml) from the number of callers (simulated in test environment), creates a therad to handle that request and kills that thread. Server worked fine with owe load and no. of request was not too high and we never created many threads. With new load configurations, more than 2500 threads are required.
The stack trace at crash is:
5463: Oct 09 14:17:47.315 PDT %MIVR-ENG-7-UNK:java.lang.OutOfMemoryError: unable to create new native thread^M
at java.lang.Thread.start(Native Method)^M
at com.cisco.jtapi.ObserverThread.?(com/cisco/jtapi/ObserverThread)^M
at com.cisco.jtapi.ObserverProxy.<init>(com/cisco/jtapi/ObserverProxy)^M
at com.cisco.jtapi.ObserverManager.?(com/cisco/jtapi/ObserverManager)^M
at com.cisco.jtapi.ProviderImpl.?(com/cisco/jtapi/ProviderImpl)^M
at com.cisco.jtapi.CallImpl.addObserver(com/cisco/jtapi/CallImpl)^M
at com.cisco.wf.subsystems.jtapi.TAPIPortGroup$Port$InCallObserverImpl.transfer(TAPIPortGroup.java:6082)^M
at com.cisco.wf.subsystems.jtapi.TAPIPortGroup$Port.connect(TAPIPortGroup.java:3892)^M
at com.cisco.wf.steps.iaq.SelectResourceStep.execute(SelectResourceStep.java:468)^M
at com.cisco.wf.steps.iaq.SelectResourceStep.execute(SelectResourceStep.java:164)^M
at com.cisco.wfframework.obj.WFBeanStep.executeImpl(WFBeanStep.java:99)^M
at com.cisco.wfframework.obj.WFStep.execute(WFStep.java:120)^M
The error returned from win32 api is:
Not enough storage is available to process this command.^M^M
Not enough storage is available to process this command.^M^M
Not enough storage is available to process this command.^M^M