It is very important that you read this before continuing:
Without details it will be nearly impossible to help you. What product version are you using? What is the platform and version where Forms (Application Server) is installed? How does the client connect to the server (SSL, VPN, HTTP, SSO, etc)? We need details.
That said, I would not recommend setting HEARTBEAT to 1 in any case. This can cause unnecessary network traffic. Generally, a value of 5-10 is appropriate. Also, setting FORMS_TIMEOUT to a value greater than 15 or so, is wasteful. By setting it to 60 as you have done, you are saying that you want orphaned processes to continue wasting resources for 1 hour after the client has gone. This makes little sense. A properly coded form and properly patched Forms environment, would rarely need to have FORMS_TIMEOUT set to a value this high.
To your comment, in cases where FORMS_TIMEOUT does not appear to terminate orphaned processes, this is usually the result of processes that are "spinning". In other words, they are in a state which makes them unable to self-terminate. This can sometime occur if for example the form is running a long query or other db action and while still running, the user terminates the session. There were also some known issues in older versions that caused similar conditions, but those have since been corrected in current versions. The latest Forms version is 18.104.22.168
Thanks for your fast response and sorry about the lack of information.
The current architecture is as below:
- F5 persistent sesion 1h
- Apache 2.2.12
- Weblogic 10.3.6.0 (11g)
- Oracle Portal, Forms, Reports and Discoverer 11g Patchset 22.214.171.124.0
Users usually run heavy forms that last for some hours. Every week there are very processes running on the machine for up to 120 hours, so after some of the these processes a big part of the CPU is wasted causing important performance issues. We are looking for a timeout or something else to finish this processes after 60 minutes. A shell script could be coded to do it, but it seems to be "less beautifull". We wonder if a parameter from the product let do that.
I guess the first question I have is related to your comment:
"We are looking for a timeout or something else to finish this processes after 60 minutes"
Do you want to terminate healthy sessions that have been idle for a period of time OR are you finding that sessions have been orphaned (there is no corresponding client) and you want to kill those?
If you want to terminate healthy idle sessions properly, you will need to create a Java Bean that monitors user activity. After a desired idle period, the bean would request an "EXIT_FORM" be executed and cleanly terminate the application.
If, however the issue is that there is no corresponding client session, but the server runtime (frmweb) process continues to run then I would recommend first determine what is causing this behavior. Because this is not correct behavior, it should be correctable and you should not need to create a "script" or any other hack to terminate it. The first step will be for you to determine what causes the orphaned process behavior to occur in the first place. In other words, what did the user do that cause it? So, for example do this occur when the user clicks on a particular button in the app or when they display an LOV and choose a value, etc.... Once you determine the steps to reproduce the problem, I would recommend contacting Oracle Support. However, before contacting Oracle Support, I would first recommend installing the latest patch set as if this was a product defect, it is possible it has been corrected in the latest patch. The latest patch for the version you are using is 126.96.36.199 (patch ID 16471668). If after patching the same problem continues, consider contacting Support.
Michael. Thanks you for you answer.
I will try to upload the upgrade. If the error persists talk to Oracle Support