Appboard/2.4/admin/performance and sizing: Difference between revisions
imported>Jason.nicholls No edit summary |
imported>Jason.nicholls |
||
Line 25: | Line 25: | ||
* slow responses from data sources: such as slow running database queries, high latency links / remote data sources, and poorly performing data sources which is sometimes the case with web APIs. | * slow responses from data sources: such as slow running database queries, high latency links / remote data sources, and poorly performing data sources which is sometimes the case with web APIs. | ||
* transferring large amounts of data, this applies from the AppBoard server to data sources, and the AppBoard server to clients. | * transferring large amounts of data, this applies from the AppBoard server to data sources, and the AppBoard server to clients. | ||
* client system doesn't have enough memory | * Viewer client system doesn't have enough memory | ||
* client system is already slow and/or loaded due to other applications | * Viewer client system is already slow and/or loaded due to other applications | ||
Some of these can be mitigated to an extent by isolating the problem and trying to reduce or eliminate it. Some examples: | |||
* slow database query: increase the AppBoard cache timeout if applicable, restructure the query, perhaps indexes may help on the database, pre-fetch the data with a batch process and store in a local database which can serve the data much quicker. | |||
* large data-sets: restructure the query to return the minimum data required. Use server-side-filters to reduce data transferred to the Viewer client. | |||
== Scaling AppBoard == | == Scaling AppBoard == |
Revision as of 12:12, 28 August 2013
On the recommended hardware enPortal should support 100-200 concurrent user sessions depending on how active / how many simultaneous requests are made overall.
For AppBoard the situation is quite different due to the AppBoard server caching and data processing. This can be heavily influenced by the size of data-sets, caching times, client polling frequencies, and the miscellaneous ways to transform data such as sub-queries, filtering, and data processing scripts. For a moderate deployment the number of concurrent users may be in the range of 50 or so but could vary greatly.
Memory
As with any Java application performance is greatly impacted if there is insufficient memory and greater amounts of CPU time is given up trying to free memory until the point it becomes too slow and OutOfMemoryErrors occur.
While it's possible to profile, analyse and determine the ideal amount of memory to allocate this can be a lengthy process.
As a general rule, if experiencing performance issues and/or out of memory errors then increase the memory allocated to Java. If memory usage stays well within the allocated maximum memory and performance is still an issue then the performance issues could be elsewhere.
For more information on configuring AppBoard's memory parameters refer to the Memory Configuration page.
CPU
Responsiveness
Responsiveness can influence the perceived performance of AppBoard by end-users of the system. Clearly the AppBoard server is a factor but in the situation both memory and CPU utilization are not an issue then the problem could be due to other reasons. Consider:
- slow responses from data sources: such as slow running database queries, high latency links / remote data sources, and poorly performing data sources which is sometimes the case with web APIs.
- transferring large amounts of data, this applies from the AppBoard server to data sources, and the AppBoard server to clients.
- Viewer client system doesn't have enough memory
- Viewer client system is already slow and/or loaded due to other applications
Some of these can be mitigated to an extent by isolating the problem and trying to reduce or eliminate it. Some examples:
- slow database query: increase the AppBoard cache timeout if applicable, restructure the query, perhaps indexes may help on the database, pre-fetch the data with a batch process and store in a local database which can serve the data much quicker.
- large data-sets: restructure the query to return the minimum data required. Use server-side-filters to reduce data transferred to the Viewer client.
Scaling AppBoard
Scaling AppBoard beyond a single server is supported with the ideal configuration being a load-balanced cluster. As the load on AppBoard is directly related to the demand (concurrent users) then clustering provides a linear way to scale and service additional concurrent users.
For more information please refer to the Clustering & Failover guide.