AEM 6.4 has reached the end of extended support and this documentation is no longer updated. For further details, see our technical support periods. Find the supported versions here.
This article discusses strategies and best practices you can implement to reduce bottlenecks and optimize the performance of your AEM Forms deployment.
You can configure and control the caching strategy for AEM Forms using the Mobile Forms Configurations component in AEM Web Configuration Console at:
The available options for caching are as follows:
The default cache settings for AEM Forms may not be good enough to achieve optimal performance. Therefore, it is recommended to use the following settings:
If you use AEM Dispatcher to cache adaptive forms, it also caches adaptive form which contains forms with pre-filled data. If such forms are served from AEM Dispatcher cache, it may lead to serving pre-filled or stale data to the users. So, use AEM Dispatcher to cache adaptive forms which do not use pre-filled data. Moreover, a dispatcher cache does not auto-invalidate cached fragments. So, do not use it to cache form fragments. For such forms and fragments, use Adaptive forms cache.
For optimal performance, it is recomended to use the following JVM
init arguments to configure the
Java heap and
set CQ_JVM_OPTS=%CQ_JVM_OPTS% -Xms8192m set CQ_JVM_OPTS=%CQ_JVM_OPTS% -Xmx8192m set CQ_JVM_OPTS=%CQ_JVM_OPTS% -XX:PermSize=256m set CQ_JVM_OPTS=%CQ_JVM_OPTS% -XX:MaxPermSize=1024m
The recommended settings are for Windows 2008 R2 8 Core and Oracle HotSpot 1.7 (64-bit) JDK and should be scaled up or down as per your system configuration.
Adaptive forms and HTML5 forms render in HTML5 format. The resultant output could be large depending on factors like the form size and images in the form. To optimize the data transfer, the recommended approach is to compress the HTML response using the web server from which the request is being served. This approach reduces the response size, network traffic, and the time required to stream data between server and client machines.
For example, perform the following steps to enable compression on Apache Web Server 2.0 32-bit with JBoss:
The following instructions do not apply to any server other than the Apache Web Server 2.0 32-bit. For steps specific to any other server, see the corresponding product documentation.
Following steps demonstrates changes required to enable compression with Apache Web Server
Obtain the Apache web server software applicable to your operating system
Apache can communicate to CRX using the HTTP protocol. The configurations are for optimization using HTTP.
Uncomment the following module configurations in
LoadModule proxy_balancer_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_http.so LoadModule deflate_module modules/mod_deflate.so
For Linux, the default
Configure the proxy on port 4502 of crx.
Add following configuration in
APACHE_HOME/conf/httpd.conf configuration file.
ProxyPass / https://<server>:4502/ ProxyPassReverse / https://<server>:4502/
Enable Compression. Add following configuration in
APACHE_HOME/conf/httpd.conf configuration file.
For HTML5 forms
<Location /content/xfaforms> <IfModule mod_deflate.c> SetOutputFilter DEFLATE #Don’t compress SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #Dealing with proxy servers <IfModule mod_headers.c> Header append Vary User-Agent </IfModule> </IfModule> </Location>
For adaptive forms
<Location /content/forms/af> <IfModule mod_deflate.c> SetOutputFilter DEFLATE #Don’t compress SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #Dealing with proxy servers <IfModule mod_headers.c> Header append Vary User-Agent </IfModule> </IfModule> </Location>
To access the crx server, use
server is the name of the server on which the Apache server is running.
You can experience slow performance on the servers running an antivirus software. An always on antivirus (on-access scanning) software scans all the files of a system. It can slow down the server and performance of the AEM Forms is impacted.
To improve the performance, you can direct the antivirus software to exclude the following AEM Forms files and folders from always on (on-access) scanning:
AEM Installation directory. If it is not possible to exclude complete directory, exclude the following:
Application server temporary directory. The default location is:
(AEM Forms on JEE only) Global Document Storage (GDS) directory. The default location is:
(AEM Forms on JEE only) AEM Forms server logs and temporary directory. The default location is:
[AEM Forms installation directory]\Adobe\AEM forms\[app-server]\server\all\logs
If you are using a different location for GDS and temporary directory, open the AdminUI at
https://[server]:[port]/adminui), navigate to Home > Settings > Core System Settings > Core Configurations to confirm the location in use.
If the AEM Forms server performs slow even after excluding the suggested directories, then exclude the Java executable file (java.exe) also.