Apigee request not reaching the trace

I am trying to POST a request having 16 kb payload and It fails intermittently i.e.

Sometime it returns the response (200 ok) and sometimes it just returns 500 internal server error without even coming to trace. In case of failure the request is not even reaching Apigee trace.

When I reduce the size of payload it is always succeed. Only when it is a big JSON it leads to "intermittent trouble".

I am not sure what could be the reason for this intermittent failure . If size of payload is the problem it should always return below error which I faced in past. @Dino and @Anil Sagar what could be issue. I don't have access to check router logs, but support team said there is nothing in the router that indicates failure. If it is Apigee issue then I can open a support ticket. Just need confirmation from you guys before opening the ticket.

For large payload I should receive below error message.

{
    "fault": {
        "faultstring": "Body buffer overflow",
        "detail": {
            "errorcode": "protocol.http.TooBigBody"
        }
    }
}<br />
2 13 1,241
13 REPLIES 13

navjot_k
Participant II

Hi Ashwini

Have you tried to trace this by tcpdump. That way you can knw what is happening at network level. Also there is limit on the max payload size. You can try to turn the streaming on for this scenario and chk if it helps

Hi

You wrote

I don't have access to check router logs,

Is this Apigee Edge SaaS? or Apigee Edge OPDK ?

It is breaking intermittently with streaming enabled as well.

Hi @Dino, it is on prem installation only, but I have access to Apigee edge only. There is separate infra team who can see all kind of logs and they said they don't see anything in router logs. Is there any other way I can check if my request is reaching router as I am not sure what else could be causing the issue. I am able to invoke the backend directly but with Apigee I am getting intermittent error.

Either enable the debug log in router to capture more information (

https://docs.apigee.com/private-cloud/v4.17.05/enabling-debug-logging)

or run a tcpdump for better insights.

Sounds like good advice !

I ran the tcp dump and saw that the request is reaching the router endpoint and that is the place where it is getting blocked. I am not sure why with 16 kb payload I am getting intermittent issue.

rmishra
Participant V

If you are getting an intermittent error, it is possible that some network routes are broken/specific servers in the topology are having issues. It's hard to be more specific without knowing your Apigee topology.

But i would begin by asking:

1. Is there a load balancer infront of the routers?

2. Check which router the successful request lands on, check which router the failed request lands on?

3. Check which message processor the successful request lands on, check which message processor the failed request lands on

It would be helpful to get tcpdumps on corresponding network interfaces.

The issue is this happens only when I increase the payload. Once I reduce the payloads it works perfectly.

Do you have an idea of the payload size at which it breaks? There is a payload limit to request/response. Beyond that you have to enable streaming.

By default the limit is 10 MB

If you are using private cloud, you should be able to reconfigure it as described in

https://docs.apigee.com/api-platform/develop/enabling-streaming

The problem is it is breaking intermittently. The size was only 16kb and I know the limitation of 10 mb and 3mb.

Run a TCP dump on each instance of message processors and routers. When the API call fails see who gets the call and who doesn't.

Most importantly, it will help you identify where the call is failing.