question

Upvote
Accepted
31 0 2 5

RFA C++ buffer settings

Hello Team,

We have RFA C++ ver. 7.x application subscribing to 10K RICs. Several times during the market hours the application logs misses updates due to buffer overflow (logged internally by the application).

Are the below [numOutputBuffers] setting enough for high volume data updates? What other parameters can be tuned to optimize the application processing of updates?

The RFA configuration is as below

\Sessions\Session0\connectionList = "Connection_0"

\Sessions\Session0\waitTimeout = 3600000

\Sessions\Session0\recoveryTimeout = 18000000

\Sessions\Session0\recoveryQueueUpperLimit = 40000

\Sessions\Session0\responseQueueMaxBatchSize = 500

\Connections\Connection_0\connectionType = "SSLED"

\Connections\Connection_0\serverList = "fp_ads1, fp_ads2"

\Connections\Connection_0\portNumber = 8101

\Connections\Connection_0\userName = "feedpricer_956"

\Connections\Connection_0\marketDataItemSubTimeout = 12375000

\Connections\Connection_0\connectRetryInterval = 5000

\Connections\Connection_0\numOutputBuffers = 100

\Connections\Connection_0\messageThrottleRate = 150


Thank you.

Regards

rfa-apic++buffer
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
52.9k 136 44 63

@SMR

From the description, the server cut the connection due to the buffer overflow condition. Therefore, the number of output buffers must be increased on the server, not the client.

The buffer overflow condition could be from a network issue or a slow consumer.

If the application is a slow consumer, you need to modify the application to process retrieved messages faster. Otherwise, you can create multiple event queues and use multiple threads to dispatch events in the event queues, or you can use RFA’s Horizontal Scaling feature to create multiple instances of consumers on multi-core processors.

For more information regarding Horizontal Scaling, please refer to the RFA Developers Guide.



icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
31 0 2 5

Hello Jirapongse

There is no buffer overflow message in the ADS logs. The buffer overflow is internal application related so please ignore it for now.

What is the description for <numOutputBuffers> and <messageThrottleRate>, could not find related details in the RFA documentation. And is there a complete list of other parameters used to configure RFA application?

Regards

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
52.9k 136 44 63

@SMR

You can get a complete list of RFA configurations from the RFA Configuration Guide in the RFA C++ package. For the Market Data interface, it is in the /Legacy/Docs/RFA_ConfigGuide.pdf file.

The followings are the descriptions of the numOutputBuffers and messageThrottleRate configurations.

1662530562941.png


1662530562941.png (86.3 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
31 0 2 5

Hi Jirapongse,

Thank you for your reply with the documentation link.

The description for numOutputBuffers is max number of SSL output buffers but for a consumer application shouldn't it be inputbuffers?

Thanks.
Regards

SMR

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@SMR

I checked the configuration guide and found that the numInputBuffers configuration is not available for the SSLED connection.


Upvote
31 0 2 5

@Jirapongse, Thank you for your reply. Please close the ticket. Regards

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.