Page History
If you have issues installing or configuring the Agent, see the Installation/Configuration troubleshooting page for help troubleshooting. Below are some common issues you may come across while running the DataSync Agent and subscribing to records. Contact support@perspectium.com if your issue is not listed below or you have any other questions.
General Issues
UI Expand | ||
---|---|---|
| ||
Open the wrapper.conf file located in the Agent's conf folder and change the following configuration: #wrapper.java.maxmemory=64 Removing the “#” and putting a numeric value higher than 64. This numeric value is a size in MB for the Java memory heap space the agent can use. Generally, you would base this value on the memory available on the server where the Agent is running. For example, if the server has 1GB of memory, you can set it to be 512MB here: wrapper.java.maxmemory=512 |
UI Expand | ||
---|---|---|
| ||
Start by enabling the timing feature in the Agent to see the times the Agent takes to get messages from the queue in the Integration Mesh as well the time it takes to build statements and execute those against the database. This will help determine where the performance bottlenecks are. Contact support@perspectium.com for more information. |
UI Expand | ||
---|---|---|
| ||
You can add a loginTimeout database parameter to the agent.xml configuration file to control the DB connection timeout. In your agent.xml, under each <task> entry, add <database_parms>loginTimeout=NN</database_parms> where nn is in seconds. For example: <database_parms>loginTimeout=30</database_parms> If you already have <database_parms> configured, then append the loginTimeout parameter using: <database_parms>integratedSecurity=true;loginTimeout=30</database_parms> | ||
UI Expand | ||
| ||
You can alter the default <connection_request_timeout> by setting it to 120000. This should give your connection plenty more room to handle all the IO of large transaction. You would place it within your agent.xml like so: <config> <agent> <subscribe> <task> <task_name>timeout_example</task_name> <message_connection connection_request_timeout="120000" user="XXX" password="XXX" >your_url</message_connection> ... <task> <subscribe> </agent> </config> This should be placed on the <message_connection> within the task level of the desired connection. This attribute will only be set for the specified <message_connection>, so if you have separate connections for monitoring or replicating data they will use the default unless specified. Another option is if you have firewall access to both your https and AMQPS connections (https://your_instance.perspectium.net & amqps://your_instance-amqp.perspectium.net) you can try either
|
UI Expand | |||||
---|---|---|---|---|---|
| |||||
|
UI Expand | ||
---|---|---|
| ||
You can add a loginTimeout database parameter to the agent.xml configuration file to control the DB connection timeout. In your agent.xml, under each <task> entry, add <database_parms>loginTimeout=NN</database_parms> where nn is in seconds. For example: <database_parms>loginTimeout=30</database_parms> If you already have <database_parms> configured, then append the loginTimeout parameter using: <database_parms>integratedSecurity=true;loginTimeout=30</database_parms> |
UI Expand | ||
---|---|---|
| ||
|
MySQL Specific Issues
UI Expand | ||||||
---|---|---|---|---|---|---|
| ||||||
The default in MySQL does not support multibyte characters. So to properly work with multibyte characters, run the following command in MySQL on the database:
Alternatively, you can set up your agent.xml to have the following directives to implement utf8mb4:
Or your databases.xml:
|
Microsoft SQL Server Specific Issues
UI Expand | ||
---|---|---|
| ||
The DataSync Agent saves data into the default schema of the database user specified in the agent.xml configuration file. To change the default schema of a user in your SQL Server database, see the DEFAULT_SCHEMA argument.
|
UI Expand | ||
---|---|---|
| ||
If your Agent is continuously showing logs similar to this: 2021-01-01 11:31:35.766 ERROR - psp_agent_subscribe - StatementBuilder - [incident] index: 1 error: org.apache.commons.dbcp2.DelegatingPreparedStatement with address: "NULL" is closed. This may be due to database configurations in your SQL Server causing the connection to timeout before the Agent is able to finish processing messages. This is shown by the "NULL" is closed message and the Agent having to re-establish the connection. To help troubleshoot if this is the case, do the following:
|
Oracle Specific Issues
UI Expand | ||
---|---|---|
| ||
The reason the you're receiving this error is due to Oracle's parameters for SHARED_POOL_SIZE. Note that when SGA_TARGET is set and the parameter is not specified, then the default is 0 (internally determined by the Oracle Database), but if the parameter is specified, then your specified value indicates a minimum value for the memory pool. In the case where a value was set for SGA_TARGET, that would be the value you would need to update rather than the SHARED_POOL_SIZE since by setting SGA_TARGET, you are using automatic SGA management. Hence, there is no need to manually set the value of SHARED_POOL_SIZE because Oracle will internally transfer memory between the SGA components. In the case where you are more concerned with setting a larger value for SGA_TARGET, you can also make a larger value for SHARED_POOL_SIZE but the value must be smaller than SGA_TARGET to avoid encountering the following issue: SGA_TARGET = 1GB SHARED_POOL_SIZE = no value You will encounter an issue when the value of SHARED_POOL_SIZE exceeds the value of SGA_TARGET. It is recommended to set the SGA_TARGET value at a minimum of 5GB. Therefore, if the SHARED_POOL_SIZE value is at 1GB, the SGA_TARGET will still have at least 4GB for allocation of other memory components that are concurrently stored in SGA_TARGET.
|
UI Expand | |||||
---|---|---|---|---|---|
| |||||
|
Postgres Specific Issues
UI Expand | ||
---|---|---|
| ||
This error is generally due to the Agent losing connection to the Postgres database and having to continually reconnect. The logs will generally show this block of statements over and over again:
To prevent the Agent from losing connection, you can modify your Postgres database to have less idle time in order to keep the connection alive. If you have access to the postgresql.conf configuration file, change tcp_keepalives_idleto have a smaller value such as 500. For example, you would modify the file to have: tcp_keepalives_idle = 500 If you have PgBouncer installed with your Postgres, you can set the tcp_keepidle setting to have a smaller value such as 500 as well. For example, you would modify the file to have: tcp_keepidle = 500 This way Postgres will keep the connection active longer so it doesn't go idle and eventually lose connection. Finally in the Agent's configuration file (agent.xml), you can change the <database_parms> to add Postgres connection parameters related to connectTimeout, socketTimeout and tcpKeepAlive. Specifying small values for these will also allow the connection to not go idle and be kept alive longer. Assuming the agent.xml looks as follows (with an example database schema of dbschema): <database_parms>currentSchema=dbschema</database_parms> You would add the connection parameters as follows: <database_parms>currentSchema=dbschema&connectTimeout=500&tcpKeepAlive=true&socketTimeout=500</database_parms>
|
Foreign Character Issues
UI Expand | ||
---|---|---|
| ||
Do one of the following:
The format is: <!-- MySQL multibyte decryption --> <database_parms>characterEncoding=UTF-8</database_parms> <!-- SQL Server multibyte decryption (Windows) --> <!-- Note: Requires Agent V3.11.0 or greater --> <database_parms>SendStringParametersAsUnicode=true</database_parms> |
UI Expand | ||
---|---|---|
| ||
Ensure that your database is using the correct character set. Oracle requires the AL32UTF8 character set. MySQL requires utf8mb4 or utf8 character set and utf8_general_ci collation for its character set and collation. In MySQL, you can update this by running the following command on the database: ALTER DATABASE [DBNAME] CHARACTER SET utf8 COLLATE utf8_general_ci; Also verify that you are using the <byte_padding> option in your agent.xml. To setup byte padding please see DataSync Agent configurations. |
...