For a deeper look into our DataScope Select REST API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials

question

Upvotes
Accepted
1 0 0 0

Running out of memory while processing large responses - DSS

Hi All,


I believe I am not using best practices when processing the response. for ex., chunking, paging, or streaming. Hence my application goes out of memory (breaching 500MB). I would like to get your advice on how to avoid an oom situation by processing the data efficiently.

I tried looking at the examples on pages: https://selectapi.datascope.refinitiv.com/RestApi.Help/Home/KeyMechanisms?ctx=Extractions&tab=0&uid=StreamingJson and https://developers.lseg.com/en/api-catalog/datascope-select/datascope-select-rest-api/download, however, I did not find any examples I can implement for my use case.


Here are the steps in my app using Java 17:

I call the following end point with 6000 instruments to retrieve 6 data points back.

https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractWithNotes

"@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.EndOfDayPricingExtractionRequest"


This request times out as expected and when I poll using locationUrl, I end up getting the data I need.

https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractRawResult(ExtractionId='test')


I store this data in a list. Then, I call the following end point with the same 6000 instruments to retrieve 1 data point back. Reason being, this particular data point is only available in this API.

https://selectapi.datascope.refinitiv.com/RestApi/v1/Extractions/ExtractWithNotes

"@odata.type": "#DataScope.Select.Api.Extractions.ExtractionRequests.FixedIncomeAnalyticsExtractionRequest",


I store this data in a separate list. Then using a hashmap and for each loop, I merge the requests into a single list of objects, with each object representing data for a unique instrument identified by its instrumentISIN.



dss-rest-api#productresponsememorystreamingpaging
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.

@navin.gamage

Hi,

Thank you for your participation in the forum.

Are any of the replies below satisfactory in resolving your query?

If yes please click the 'Accept' text next to the most appropriate reply. This will guide all community members who have a similar question.

Otherwise please post again offering further insight into your question.

Thanks,

AHS

@navin.gamage

Hi,

Please be informed that a reply has been verified as correct in answering the question, and marked as such.

Thanks,

AHS

Upvotes
Accepted
78.9k 250 52 74

@navin.gamage

If the application keeps the data of all 6000 instrumetns in the application's memory. I am not sure how paging, chunking or streaming can reduce the size of memory used to store the data of 6000 instruments. The total size of data will be the same for 6000 instruments.

You may reduce the number of instruments in each request, such 3000 instruments in each request. Otherwise, you may save the extraction resutls in the local files and process those files according to the application's resouces and requirements.

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
78.9k 250 52 74

@navin.gamage

Thank you for reaching out to us.

Typically, you can increase the size of memory by using the JVM options.

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size

You can check this discussion on StackOverflow for more information.

To verify the memory usage in the application, you can use the Java profiler tool, such as VisualVM to identify which components in the application consume a lot of memory.

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.

Thanks, however, I am not looking to expand the memory.

Do you know if I can use paging, chunking or streaming to make the processing more efficient?

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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