Are their any restrictions on teh payload size of request payload on APIGEE EDGE ?We have a EMC S3 API in the backend and want to use EDGE to implement security and access to this API.
My concern is
1) Would EDGE support payload size (in order of MBs or GBs) especially during peak traffic ?(Note that the end user will be using the API Proxy exposed on EDGE to upload/download/delete large files from S3) ?
2) If we go for "streaming" would there be any open connection issues to the backend from Edge ?
There are certainly limits - for large payloads you should 'stream'. Also remember you are going to be bound by network bandwidth [typically < 1Gbps]
> If we go for "streaming" would there be any open connection issues to the backend from Edge ?
Sorry I don't understand the question, afaik - there aren't any issues. Have you found any specific issues with the backend?
>>Sorry I don't understand the question, afaik - there aren't any issues. Have you found any specific issues with the backend?
The customer had previously experience lost of "open wait" connection issues in the past .So they are a bit nervous about the re-occurrence of the issue again.Although we have assured them that the performance and connection handling have improved and is better over a period of time.
To prevent memory issues in Edge, message payload size is restricted to the following:
Exceeding those sizes results in a protocol.http.TooBigBody
error.
Following are the recommended strategies for handling large message sizes in Edge:
http.properties
file to increase the limit in the HTTPResponse.body.buffer.limit
parameter. Be sure to test before deploying the change to production.If you want to download large files, enable response streaming so that the payload is not buffered which means there won't be any payload size limitations. Like @Varun Singh mentioned earlier, with streaming enabled you cannot enforce policies that interact with the payload like cache, XSLT, XML to JSON etc.
With streaming there would be open connections that serve the request/response while the response is being streamed. So apart from being network bound at some point you would hit the connection limit or socket limit if you have very high concurrency and very large payloads to stream. This would eventually hurt the overall performance of the system as well, depending on how large the responses are and how many concurrent connections you are running.