What does the error 'Memory Limit Exceeded' in wvlog mean and how can I change it?
PROGNOSIS imposes a configurable limit on the memory each of its processes can use. If the process exceeds this limit then the Prognosis process manager will restart it and log a MEMORY LIMIT EXCEEDED event. If the limit is too low then the process can be restarted too frquently, and can even exceed the process restart limit (5 times within 10 minutes) and become down. For some Prognosis processes there are SET MEM-SIZE entries in the PROGNOSIS configuration defining limits. For other Prognosis processes, if there is no SET MEM-SIZE entry, then the limit will be a default of 200 MB for each process.
An appropriate limit can be determined by letting the process run until its memory usage stops increasing and levels out. This can take several hours or a day for most processes, but can take several weeks for some processes such as for payments transaction monitoring if new unique data is still coming in (in smaller and smaller amounts).
Solved! Go to Solution.
Great information, thanks for sharing. I have always been unsure if the defualt was 200 or 300.
The current memory limit in use by prognosis can be done with a quick modification to the Prognosis Status window to show effective memory limit field.
To see the actual currently in use memory by an individual process click on the process ID and you will see the actual memory in use by the process and how close to the limit it is pushing.. if it is exceeding the memory limit you will see a spike right before the restart and you will need to increment it up in the Prognosis Subsys.
32 bit process have a 2048 limit and 64-bit processes I am not aware of a limit but I haven't seen anyone set it higher than 8096 yet.. in 11.0+ PQL and NETRTR and IRDBASE for example have a default of 4096 set.
Here is a short video on how to increase the memory limit when getting MEMORY LIMIT EXCEEDED Prognosis log message.
Steps in thie video:
1. Where to find the Prognosis log to see if this event is occurring:
- in the Web UI - Servers - Windows - [server name] - Prognosis Status - Error Log
- in Windows Events - Application Log Prognosis Error event
- in the log file Prognosis\Server\Configuration\wvlog.txt
- in the Prognosis thick Client - Knowledge - Welcome - [Server name] - Prognosis Status - Error Log
- in the Prognosis Self Monitoring Health Check Central display
2. Identify the process name from the log
4. The process should get the new memory limit next time it is restarted (either the next time it gets a memory limit exceeded restart or by restarting Prognosis, or the process)
What is the memory limit in Prognosis?
PROGNOSIS incorporates a safeguard to ensure that it does not overuse the resources of your system without your awareness and agreement. It does this by limiting the amount of memory that each individual process can consume. Each process starts with a small amount of memory available to it. When it has used this memory up it requests additional memory equal to the amount of memory it is currently using. It continues to do this until it reaches a preset limit of memory that has been allocated for this process. The limit for all processes is by default set to 200 MB. This is the default value built into the code. It is sometimes over-ridden by having a higher value specified as a SET MEM-SIZE entry in the PROGNOSIS configuration. When this limit is reached, the process logs the error message "MEMORY LIMIT EXCEEDED", stops and is restarted with the minimum amount of memory again. If the process is stopped five times within 10 minutes it will not be restarted again, as this suggests that there is a real problem with the process which must be addressed. This memory limit for any process can be set manually with an entry in the PROGNOSIS configuration that looks like this: SET MEM-SIZE ( <process name> , nnn ) where <process name> refers to the executable name for the process you wish to change, and 'nnn' represents the new limit in MB. It is important to note that the new limit will only take effect when the process is restarted. The new limits do not apply to already running processes. Note also that it is possible to remove the memory limit for a process by simply setting the memory limit to 0 for the process as in the following command. SET MEM-SIZE (<process>, 0) This will allow "<process>" to use as much memory as it needs. This should be done with caution as it adds the risk that the Prognosis process may take a lot of memory. This option effectively turns off the in-built mechanism by which Prognosis processes limit how much memory they consume.