# 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"`