This applies to Adobe Campaign v8.7.2 and later.
For older versions, refer to the Campaign Classic v7 documentation.
This section describes how the SMS process handles data.
Here is a high level block diagram that summarizes how the SMS process interacts with its environment.
The SMS process hosts 2 important components: the SMPP connector itself that handles communication with the SMPP provider, and a background task for SR reconciliation.
The SMS process polls nms:extAccount and spawns new connections in its SMPP connector, passing settings of each account. Polling frequency can be adjusted in serverConf, in the configRefreshMillis setting.
For each active SMPP account, the SMPP connector tries to keep connections active all the time. It reconnects if the connection is lost.
Here is a diagram describing the whole process:
Phase 1
Phase 2
Phase 3
Affinities are ignored by the dedicated process connector, it just runs inside the SMS process.
Some settings can be tuned in serverConf.xml. Like any other settings in this file, it should be specified in the config-instance.xml file. All settings are in the < mta2 > element.
This table summarizes all settings. Min/max sensible values give a rough idea of the range you should consider in most cases. Debugging value is the value to choose when trying to find issues that are not related to performance.
Setting | Description | Default | Minimum sensible value | Maximum sensible value | Debugging value |
---|---|---|---|---|---|
batchUpdateSize | Size of update microbatches | 5000 | 100: Very low latency | maxWaitingMessages/updateThreads: Going above this value is useless because maxWaitingMessages will limit buffering anyway | 1: Disable microbatching, update messages one by one |
configRefreshMillis | Period for configuration reloading in milliseconds | 10000 | pollPeriodMillis: Low latency | 600000: Don’t reload too fast to save resources | 500: Low latency allows trying new settings faster |
deliveryPartRetryCount | Maximum number of times a deliveryPart is retried or postponed. Caution: restarting the sending process counts as a retry, crashes may count as a retry too. | 20 | 1: Disable retries | 50: Make messages more persistent to work around unstable providers | 1: Disable retries. 1000: Avoid flushing failed messages. |
deliveryPartRetryDelaySeconds | Minimum delay before retrying a deliveryPart. This is cross process and cross container. Delay is in seconds. | 60 | 0: Immediate retries | 3600: Very slow retries (1 hour between each retry) | 1: Makes retries easy to follow in busy logs. |
logOutput | Send monitoring & profiling data on main log output. | true | false: May increase throughput a bit. Discouraged. | true: Enable logging. | true |
maxWaitingMessages | Maximum number of messages processed at any time | 50000 | 256: Enough for a single deliveryPart | 200000: Limited by SQL query length (64k) | 1: Process messages one by one |
pollPeriodMillis | Database polling frequency (in milliseconds) to check for new messages | 2000 | 500: Very low latency | 10000: Bigger batches | 500: Low latency makes debug easy. |
prepareThreads | Number of threads for message preparation | 3 | 1: Single threaded | Number of CPUs. Be careful with RAM usage. Increasing above 6 may require increasing maxSMSMemoryMb, maxProcessMemoryAlertMb and maxProcessMemoryWarningMb | 1: Single threaded generates cleaner logs. |
profDeliveryStat | Log various aggregated statistics about internals of the SMS process | true | false: May increase throughput a bit. Discouraged. | true: Low verbosity log | true |
profLogPerMessage | Log each processing step for each message | false | false: Reduce log verbosity. | true: Very high verbosity log. Use only when absolutely necessary. Big performance impact. Please disable this setting as soon as enough data has been gathered. | true |
providerIdScanPeriod | Period in seconds between scans for new provider ids to reconcile | 10 | 1: Low latency | 60: Bigger batches for more throughput | 1: Low latency helps debugging message processing. |
providerIdThreads | Number of threads for provider id reconciling. 1 thread per instance is enough. Set to 0 to disable on this container. | 1 | 0: Disable on this container | 1 | 1 |
sendingThreads | Number of sending threads | 1 | 1: Single threaded | Number of CPUs. Too many threads usually hurt performance. | 1: Single threaded generates cleaner logs. |
updateThreads | Number of threads for updating database | 1 | 1: Single threaded | Number of CPUs. Each thread creates its own DB connection. | 1: Single threaded generates cleaner logs. |
verifyMode | Simulate sending messages. Messages are not actually sent. Useful for debugging | false | false | true | false: Run the system normally. true: Test DB access and message preparation only. |