Error When Running Forms After a Relatively Small Number (50 - 80) of Concurrent Connections
Error When Running Forms After a Relatively Small Number (50 - 80) of Concurrent Connections
Titleimage
Posted by Patrick Hamou on 2016:04:19 18:09:09
Introduction
APPLIES TO:
Oracle Forms - Version 6.0.8 to 11.1.2.1.0 [Release 6.0.8 to 11g]
Microsoft Windows x64 (64-bit)
Microsoft Windows (32-bit)
Symptoms
Caution: This note is based purely on Microsoft documentation. It involves making modifications to the registry which can have serious, negative impacts on your installation if done incorrectly. Microsoft recommends having a backup of your registry and/or system before making registry changes.
This problem is specific to MS Windows Operating Systems - normally Windows 2000 or 2003 or 2008. Although the occurrence of this issue is not common, it appears on both 32 and 64 bit windows. Note that on 64 bits windows using 64 bit 11g Forms the problem threshold may be around 170. You may receive the following error indications:
Forms 11g - FRM-93552
Forms 6i, 9.0.4.X, 10.1.2.X - FRM-92050 sometimes together with FRM-92101 or FRM-92102
Forms 9.0.4.X, 10.1.2.X - application.log shows FRM-93000
Forms 6i (Forms Listener Servlet) - jserv.log shows FRM-93000
Forms 6i (Forms Server) - error log shows ERROR 1444 - FORMS SERVICE STOPS UNEXPECTEDLY 1444
This happens with a small number of connections - the range may be 50 - 80 on 32 bit and around 170 on 64 bit machines.. The specific number depends on operating system factors such as number of CPUs, processor speed, memory, etc. The problem may occur even with less than 50.
Cause
Windows has a memory resource called the Desktop Heap. A particular section of this resource is running low and causes the problem.
Solution
Note: The following step is a convenient method to determine if the issue is heap related. It is purely a diagnostic step. It is NOT recommended to maintain this configuration. See Microsoft Warning on this under the "Caution" heading.
After accomplishing step 1 below, the number of connections that can be made without a problem should increase significantly. If this is not the case, the issue is most likely not heap related.
Note that the only way to determine for certain if there is a resource issue involving the Desktop is to use the appropriate tool from Microsoft. See Note 393163.1 "How To Check Utilization of 'Desktop Heap' on MS Windows Platforms Using 'dheapmon'" for one such tool. If you need assistance running or interpreting the results from this tool please contact Microsoft.
1. Change the logon-property from the responsible service to "[x] Allow service to interact with desktop" (using all the defaults of the registry!) and restart the service.
This forces the Apache Service (Forms 6i) or the Oracle Process Manager Service (OPMN) (Forms 9i and above) to use the IO Desktop heap which is larger than the Non-IO Desktop heap by default. The term "Desktop", here, is not to be confused with the normal Windows desktop, which holds your icons and your background, etc. In this context, it is Microsoft terminology for an area of memory.
Once verified that this increases the number of possible frmweb processes, then return this setting back to its default value - unchecked - and modify the Non-IO Desktop Heap size in the Registry as it is used by the Middle Tier OPMN Service.
2. Modify the Non-IO Desktop Heap size variable in the registry. This should not be done unless:
- A backup has been made of the registry. Any error in modification of the registry can render the system unusable.
- Solution 1 has been tested and has increased the number of processes that will run successfully.
The following information applies to Windows NT, Windows 2000, Windows 2003.
Enter the Registry and go to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems.
Double click on the Windows node value in the right frame. Increase the appropriate SharedSection parameter which will be the third one.
For example, the SharedSection specifies the system and desktop heaps using the following format:
Example Setting -> SharedSection= 1024,3072,512
SharedSection=xxxx,yyyy,zzzz The default values are normally 1024,3072,512
All the values are in kilobytes (KB).
xxxx = System-wide Heapsize. There is no need to modify this value and it is ignored for the rest of this discussion.
yyyy = IO Desktop Heapsize. This is the heap for memory objects in the IO Desktop and there is normally no need to modify this value. Programs that are run from a command line (.bat files) or an icon use this memory resource.
zzzz = Non-IO Desktop Heapsize. This is the heap for memory objects in the Non-IO Desktop and is used by programs that are spawned from a service. Therefore, this is the value that should be increased if the OPMN process is being started as a service which is the default for a windows installation of the Application Server. This number can be set as high as 30 MB (30720 KB). However, it is seldom necessary to set it this high.
If you change these values, you must reboot the system.
The values are recommended to be multiples of 512, but this isn't necessary. There is a hard limit total of 48 Mb for the the total heap size for Windows.
If you are encountering this problem and running the OPMN process as a service then, assuming your values are similar to the defaults mentioned above, then it is suggested you modify the Non-IO Desktop Heap to 5 MB (5120KB). This setting would look like this ->
SharedSection = 1024,3072,5120
This sets the Non-IO Desktop Heap size to 5 MB which normally should be sufficient. If not, increment it by 1 MB and test. There is NO need to modify the first two variables (System-wide Heapsize & IO Desktop Heapsize).
Additional Information
The issue may reproduce with Forms 11g also and the same solution applies if the OPMN or WLS processes are started as services.
Note: The name of the service mentioned above is normally "Oracle<Middletier home name>ProcessManager" for 10gR2 since the process manager is installed as a Windows Service by default. Therefore, if your Middle Tier Home is called "Mid10gR2" then this windows service will be called"OracleMid10gR2ProcessManager".
For 11g, only Oracle Process Manager for the ORACLE_INSTANCE is installed as a Windows services by default. Because of the different architecture of 11g, this service should not be the cause of the problem. However, if you have configured your Forms managed server (WLS_FORMS)as a service, then this step is applicable for the WLS_FORMS managed server.
Posted by Patrick Hamou on 2016:04:19 18:09:09