|
| 1 | +# Rate limiting support |
| 2 | + |
| 3 | +If you are experiencing high memory usage issues with Citrix ADC Observability Exporter, you can enable rate limiting support for transactions in ElasticSearch, Splunk, and Zipkin endpoints. |
| 4 | + |
| 5 | +The following parameters are added for the rate-limiting support. |
| 6 | + |
| 7 | +| Parameter | Default value | Description| |
| 8 | +|---------|-----------------|-------------------- | |
| 9 | +| `transRateLimitEnabled` (Optional)| `no` | Set this value as `yes` to enable rate limiting for transactions. | |
| 10 | +| `transRateLimit` (Optional) | 1 | Specifies the rate-limit in terms of log stream buffers per second. Here, a limit of 100 means 100 log buffers per second. Each log buffer is 8 kibibyte (KiB) in size. That means Citrix ADC Observability Exporter receives about 800 KiB per second. This value translates to approximately 800 TPS. But 800 TPS is an approximation and the size can vary to more or less than 800 TPS. | |
| 11 | +| `transQueueLimit` (Optional) | 1024 | Specifies the number of JSON buffers that can pile up, before Citrix ADC Observability Exporter starts discarding them. For Zipkin, one JSON buffer is about 64 KiB and a limit of 1000 means approximately 64 MB of JSON data. For Splunk and ElasticSearch, one JSON buffer is about 32 KiB and a limit of 1000 means approximately 32 MB of data.| |
| 12 | +| `transRateLimitWindow` (Optional) | 5 |Specifies the recalculation window in seconds and the value must be greater than zero. The lower the window size, the more effective is the rate-limiting. But, the lower value can cause CPU overhead.| |
| 13 | + |
| 14 | +To resolve memory usage issues, you can set the `transRateLimitEnabled` option as `yes` and the `transRateLimit` to 100 (customizable). You can try varying the `transRateLimit` value and find out the value that works best for your environment. |
| 15 | + |
| 16 | +> **Note:** |
| 17 | +> Your records may get dropped if they are being exported at a rate higher than the configured `transRateLimit`. |
| 18 | +
|
| 19 | +The following is a sample JSON configuration for Splunk with rate limiting options enabled. |
| 20 | + |
| 21 | + { |
| 22 | + "transRateLimitEnabled": "yes", |
| 23 | + "transRateLimit": "100", |
| 24 | + "transQueueLimit": "1024", |
| 25 | + "transRateLimitWindow": "5", |
| 26 | + "Endpoints": { |
| 27 | + "SPLUNK": { |
| 28 | + "ServerUrl": "<server-url>", |
| 29 | + "AuthToken": "<auth-token>", |
| 30 | + "Index": "", |
| 31 | + "RecordType": { |
| 32 | + "HTTP": "all", |
| 33 | + "TCP": "all", |
| 34 | + "SWG": "all", |
| 35 | + "VPN": "all", |
| 36 | + "NGS": "all", |
| 37 | + "ICA": "all", |
| 38 | + "APPFW": "all", |
| 39 | + "BOT": "all", |
| 40 | + "VIDEOOPT": "all", |
| 41 | + "BURST_CQA": "all", |
| 42 | + "SLA": "all", |
| 43 | + "MONGO": "all" |
| 44 | + }, |
| 45 | + "TimeSeries": { |
| 46 | + "EVENTS": "yes", |
| 47 | + "AUDITLOGS": "yes" |
| 48 | + }, |
| 49 | + "ProcessAlways": "yes", |
| 50 | + "ProcessYieldTimeOut": "500", |
| 51 | + "MaxConnections": "512", |
| 52 | + "JsonFileDump": "no" |
| 53 | + } |
| 54 | + } |
| 55 | + } |
0 commit comments