This page provides information for self-managed customers configuring the data service. The data service configuration is specified in data-server-cluster
element in the appian-topology.xml
file, located in both the <APPIAN_HOME>/ae/data-server/conf/
and <APPIAN_HOME>/ae/conf/
directories:
1
2
3
4
5
6
<topology>
...
<data-server-cluster>
<data-server host="machine1.example.com" port="5400" rts-count="2"/>
</data-server-cluster>
</topology>
For a high availability configuration, specify three instances of the data service on different machines:
1
2
3
4
5
6
7
8
<topology>
...
<data-server-cluster>
<data-server host="machine1.example.com" port="5400" rts-count="2"/>
<data-server host="machine2.example.com" port="5400" rts-count="2"/>
<data-server host="machine3.example.com" port="5400" rts-count="2"/>
</data-server-cluster>
</topology>
You must specify the data-server-cluster
configuration in appian-topology.xml
. Copy the appian-topology.xml
file from <APPIAN_HOME>/conf/
into <APPIAN_HOME>/data-server/conf/
before starting the data service. Copies of the topology file in each location must always be in sync, irrespective of the configurations specified.
A data-server
node element must be present and must be structured similarly to the following:
1
<data-server host="machine3.example.com" port="5400" rts-count="2"/>
If there is no data-server
node element specified, the following error is printed in watchdog.log
:
"ERROR com.appian.data.server.Watchdog - At least one data-server node must be specified"
Set the host
attribute in the data-server
element to the name of the machine hosting the data service. If the host
is not specified, the following error is printed in watchdog.log
:
"ERROR com.appian.data.server.Watchdog - data-server host must be specified"
You can define the port
attribute on both the data-server-cluster
and the data-server
elements. If the port
attribute is defined on both, the data-server
element takes precedence. If not supplied, the default port number is 5400
.
Caution: In order for the data service to function properly, make sure that you open all of the required ports. See Port Usage for more information.
The rts-count
attribute specifies the number of real-time stores in the data service. The real-time store component is responsible for processing queries to the data service, and each real-time store processes a single query at a time.
For self-managed customers, the rts-count
is set to 2 by default, but can be increased as needed to support increased query throughput. The maximum supported rts-count
varies based on the amount of memory available as shown below.
Available Memory | Supported RTS Count |
---|---|
Less than 32GB | 2 |
Between 32GB - 127GB | 4 |
Between 128GB - 384GB | 8 |
Greater than or equal to 384GB | 12 |
In addition to configuring the number of real-time stores, you can configure the number of threads that each real-time store uses when processing queries by setting rts.secondaryThreads.num
in the custom properties file.
For self-managed customers, rts.secondaryThreads.num
is set to 0 by default. Increasing the number of secondary threads will improve the performance of certain queries against synced record types, but will also result in increased CPU resource usage. The maximum supported value for rts.secondaryThreads.num
varies based on the number of real-times stores configured in rts-count
and number of CPU cores available. As a rule, the rts.secondaryThreads.num
* rts-count
must be less than the number of available CPU cores.
Note: Setting the rts.secondaryThreads.num
higher than 2 will not result in noticeable improvements in query performance.
For sites where the rts-count
is greater than 4, an optimized query routing configuration is available. This routing protocol is particularily effective for ensuring more consistent query performance during peak loads. For Appian Cloud sites, this routing protocol is automatically configured. However, self-managed customers will need to configure this routing protocol by setting the conf.ads.rts.connection.strategy.dedicated
property in the custom properties file.
The conf.ads.rts.connection.strategy.dedicated
property takes a comma separated list of application server hostnames, which can be found in the <server>
elements of the topology.xml file.
Note: Hostnames must be copied from the <server>
element in the topology file. Using hostnames from the <data-server>
element will result in failure to properly set the configuration.
Example single-node configuration: conf.ads.rts.connection.strategy.dedicated=hostname1.com
Example HA configuration: conf.ads.rts.connection.strategy.dedicated=hostname1.com,hostname2.com,hostname3.com
Topology changes can include:
To make these changes, you'll need to make configuration changes to the data-server-cluster
parameter and restart both the data service and the application server by following these steps:
<APPIAN_HOME>/data-server/bin/stop.sh
(.bat
on Windows)<APPIAN_HOME>/ae/data-server/node/election
directory from all the servers. This directory contains runtime data that needs to be deleted when certain topology changes are made.<APPIAN_HOME>/ae/data-server/data
directory to the new servers.<APPIAN_HOME>/data-server/bin/start.sh
(.bat
on Windows)<APPIAN_HOME>/tomcat/apache-tomcat/bin/stop-appserver.sh
(.bat
on Windows)<APPIAN_HOME>/tomcat/apache-tomcat/bin/start-appserver.sh
(.bat
on Windows)Configuring the Data Service