This commit is contained in:
@@ -85,7 +85,6 @@ Command line parameters are appended to the command to start the ayanova server,
|
||||
|
||||
- [AYANOVA_REPORT_RENDER_BROWSER_PATH](ops-config-report-render-browser-path.md)
|
||||
- [AYANOVA_REPORT_RENDERING_TIMEOUT](ops-config-report-rendering-timeout.md)
|
||||
- [AYANOVA_REPORT_RENDERING_MAX_INSTANCES](ops-config-report-rendering-max-instances.md)
|
||||
|
||||
### SECURITY
|
||||
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
# REPORT RENDERING MAXIMUM INSTANCES SETTING
|
||||
|
||||
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 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).
|
||||
|
||||
## Performance implications
|
||||
|
||||
Note that increasing report rendering settings too high can result in the server running out of physical memory or CPU capacity. When increasing the limits be mindful of this potential and monitor the server carefully to ensure it's not "bottlenecking". The reporting capacity scales directly with the amount of memory and CPU capacity available to the server.
|
||||
|
||||
## Default
|
||||
|
||||
If no override is specified AyaNova will use the following default value:
|
||||
|
||||
`3`
|
||||
|
||||
This means AyaNova can normally be processing 3 report requests simultaneously and is generally an adequate setting for most situations as most reports are generated in a few seconds freeing up a slot immediately after they are completed.
|
||||
|
||||
## When to change this setting
|
||||
|
||||
If users *regularly* receive error messages that the server is too busy when rendering reports it may indicate the need to increase this value. As report rendering is an intensive operation for the server consuming a great deal of memory and cpu cycles it is best to only raise this value 1 at a time and then see if that resolves the issue.
|
||||
|
||||
## MINIMUM / MAXIMUM
|
||||
|
||||
There is a limit of 10 instances maximum built into AyaNova so specifying a value greater than 10 will be ignored and 10 will be used instead.
|
||||
Specifying a value less than 1 will be automatically changed to 1 as the minimum allowed value.
|
||||
|
||||
## Overriding
|
||||
|
||||
AyaNova expects this value to be provided by a config.json property, environment variable or command line parameter named
|
||||
|
||||
`AYANOVA_REPORT_RENDERING_MAX_INSTANCES`
|
||||
|
||||
The value specified should be a string specifying the value as an integer, for example:
|
||||
`5`
|
||||
|
||||
Example config.json entry
|
||||
|
||||
```json
|
||||
{
|
||||
...other properties...
|
||||
"AYANOVA_REPORT_RENDERING_MAX_INSTANCES": "5"
|
||||
}
|
||||
```
|
||||
|
||||
Example command line parameter
|
||||
|
||||
`ayanova.exe --AYANOVA_REPORT_RENDERING_MAX_INSTANCES="5`
|
||||
|
||||
Example environment variable
|
||||
|
||||
Windows
|
||||
|
||||
`set "AYANOVA_REPORT_RENDERING_MAX_INSTANCES=5"`
|
||||
|
||||
Linux / MAC
|
||||
|
||||
`export AYANOVA_REPORT_RENDERING_MAX_INSTANCES="5"`
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# REPORT RENDERING TIMEOUT SETTING
|
||||
|
||||
The report rendering timeout value controls how long AyaNova will wait for a prior report to complete rendering when it receives a request to render a subsequent report.
|
||||
The report rendering timeout value controls how long AyaNova will wait for a report to complete rendering.
|
||||
|
||||
This avoids a situation where a subsequent user can not get their report because a prior report generation is frozen due to a bug in a report template script or simply selecting too many records to report in a practical amount of time.
|
||||
This avoids a situation where a report generation is frozen due to a bug in a report template script or simply selecting too many records to report in a practical amount of time.
|
||||
|
||||
## Performance implications
|
||||
|
||||
@@ -10,24 +10,23 @@ Note that increasing report rendering settings too high can result in the server
|
||||
|
||||
## How timeouts work
|
||||
|
||||
When a report is requested to be rendered AyaNova starts the process and makes note of the time and will process that report indefinitely for as long as it takes to complete. However, if a subsequent report request is made and the first report has not completed yet then AyaNova will use this setting to wait for the first report to process before starting the next one. If the timeout period completes without the first report completed rendering then AyaNova will forcibly stop processing the first report and release the resources dedicated to it and start processing the new report.
|
||||
When a report is requested to be rendered AyaNova starts the process and makes note of the time and will process that report until completed or the timeout is reached.
|
||||
|
||||
It's important to note that this timeout does not prevent AyaNova from processing a report for any length of time necessary to complete it; this timeout only takes effect if another report is requested to be rendered so if a User has to render a very 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)
|
||||
|
||||
The value is specified in **milliseconds** or thousandths of a second. For example a 30 second timeout is 30000 milliseconds.
|
||||
The value is specified in **minutes**.
|
||||
|
||||
## Default
|
||||
|
||||
If no override is specified AyaNova will use the following default value:
|
||||
|
||||
`30000`
|
||||
`3`
|
||||
|
||||
This means AyaNova will wait for a prior report to complete for no longer than 30,000 milliseconds or 30 seconds before it will stop that prior report render and start the new one.
|
||||
This means AyaNova will wait for a prior report to complete for no longer than 3 minutes before it will stop and return an error.
|
||||
|
||||
## MINIMUM / MAXIMUM
|
||||
|
||||
There is a hard cap of 3 minutes or 180000 milliseconds built into AyaNova so specifying a value greater than 180000 milliseconds will be ignored and 3 minutes used instead.
|
||||
Specifying a value less than 1 second (1000) will be automatically changed to 1000 as the minimum allowed value.
|
||||
There is a hard cap of 15 minutes built into AyaNova so specifying a value greater than 15 minutes will be ignored and 15 minutes used instead.
|
||||
Specifying a value less than 1 minute will be automatically changed to 1 minute as the minimum allowed value.
|
||||
|
||||
## Overriding
|
||||
|
||||
@@ -35,7 +34,7 @@ AyaNova expects this value to be provided by a config.json property, environment
|
||||
|
||||
`AYANOVA_REPORT_RENDERING_TIMEOUT`
|
||||
|
||||
The value specified should be a string specifying the timeout in **milliseconds**, for example:
|
||||
The value specified should be a string specifying the timeout in **minutes**, for example:
|
||||
`30000`
|
||||
|
||||
Example config.json entry
|
||||
@@ -43,20 +42,20 @@ Example config.json entry
|
||||
```json
|
||||
{
|
||||
...other properties...
|
||||
"AYANOVA_REPORT_RENDERING_TIMEOUT": "45000"
|
||||
"AYANOVA_REPORT_RENDERING_TIMEOUT": "4"
|
||||
}
|
||||
```
|
||||
|
||||
Example command line parameter
|
||||
|
||||
`ayanova.exe --AYANOVA_REPORT_RENDERING_TIMEOUT="30000`
|
||||
`ayanova.exe --AYANOVA_REPORT_RENDERING_TIMEOUT="5`
|
||||
|
||||
Example environment variable
|
||||
|
||||
Windows
|
||||
|
||||
`set "AYANOVA_REPORT_RENDERING_TIMEOUT=60000"`
|
||||
`set "AYANOVA_REPORT_RENDERING_TIMEOUT=4"`
|
||||
|
||||
Linux / MAC
|
||||
|
||||
`export AYANOVA_REPORT_RENDERING_TIMEOUT="120000"`
|
||||
`export AYANOVA_REPORT_RENDERING_TIMEOUT="12"`
|
||||
|
||||
@@ -22,7 +22,7 @@ Example config.json entry
|
||||
```json
|
||||
{
|
||||
...other properties...
|
||||
"AYANOVA_REPORT_RENDERING_TIMEOUT": "Th3RainInSpainFallsMainlyOnTh3Pla1n"
|
||||
"AYANOVA_SET_SUPERUSER_PW": "Th3RainInSpainFallsMainlyOnTh3Pla1n"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -158,7 +158,6 @@ nav:
|
||||
- 'PORT and URL configuration': 'ops-config-use-urls.md'
|
||||
- 'Reporting render browser path': 'ops-config-report-render-browser-path.md'
|
||||
- 'Reporting timeout configuration': 'ops-config-report-rendering-timeout.md'
|
||||
- 'Reporting max instances configuration': 'ops-config-report-rendering-max-instances.md'
|
||||
- 'Environment variable reference': 'ops-config-environment-variables.md'
|
||||
- 'Security and JWT web tokens': 'ops-config-jwt-secret.md'
|
||||
- 'SuperUser password reset': 'ops-config-set-superuser-pw.md'
|
||||
|
||||
Reference in New Issue
Block a user