Solved zombie process and resource consumption overrun issue when rendering reports
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
|
||||
The report rendering maximum instances value controls how many report rendering processors are allowed to be running when a report is submitted before AyaNova will start forcibly shutting down excess instances.
|
||||
|
||||
Report rendering is a very "expensive" process in terms of memory and cpu usage on the server and in some rare cases the report rendering process can get stuck in a loop or frozen due to a bug in a report template script or simply selecting too many records to report in a practical amount of time. If too much memory or CPU cycles are tied up by these "zombie" report rendering processes it can cause the AyaNova server to stop responding completely.
|
||||
Report rendering is a relatively "expensive" process in terms of memory and cpu usage on the server taking far more resources than non reporting AyaNova operations and in some rare cases the report rendering process can get stuck in a loop or frozen due to a bug in a report template script or simply selecting too many records to report in a practical amount of time. If too much memory or CPU cycles are tied up by these "zombie" report rendering processes it can cause the AyaNova server to stop responding completely.
|
||||
|
||||
When AyaNova receives a report request it checks first to ensure there are not more report rendering processes active than are specified in this setting. If there are too many already running it will return a busy code to the end user to try again later and will attempt to forcibly shut down any of the processes that should have expired. Expired here means processes that have been running longer than [AYANOVA_REPORT_RENDERING_TIMEOUT](ops-config-report-rendering-timeout.md) number of milliseconds.
|
||||
|
||||
It's important to note that this setting does not prevent AyaNova from processing a large time consuming report for any length of time necessary to complete it; this setting only takes effect when another report is requested to be rendered and there are no slots free for report rendering. For this reason, if a User has to render an unusually large report that is known to take longer than the timeout period they would be advised to render that report when no one else is requesting a report (i.e. after hours).
|
||||
|
||||
## Default
|
||||
|
||||
If no override is specified AyaNova will use the following default value:
|
||||
|
||||
Reference in New Issue
Block a user