News for hackers. Stuff that matters.
Re:Post Mortem of Google Outage on 14 December 2020 by ineedasername on Friday December 18, 2020 @08:52PM (#25474257)
Even worse are undocumented quotas. Probably not quite the same thing, but I've had such an issue with a SaaS API for extracting data for a cloud system. It has an unpublished limit on queries. Writing a library of code to use it, I was fine. All tests passed. Running a full day's data pull & integration had sporadic failure: It would run w/o issue for half the job, then have seeming random errors on some requests.

I kill the job, start again, and the problem is there from the very beginning. Kill again, review my code for an hour or two (python, grequest) tweak some parameters, start the job again and it seems fine, problem solved? Nope, halfway through the same issue occurs.

More testing showed even that "halfway through" wasn't consistent.

It's the hidden quota, and it wasn't even consistent: Sometimes it would go 10%, sometimes 70%. I don't know if they even had static limits or some type of dynamic system. Then you get throttled, only requests fail without any indicative error message except the "failed" or "unavailable" (I forget which)

I determined the limit was tied to the API key. Given that error messages & the unknown limit made working within their hidden limits difficult, and support was neither sympathetic or forthcoming with details necessary to work within their limits, I simply created multiple API keys & rotated between them on requests. Probably not the best behavior for a tenant of a shared system, but I didn't see much choice when the alternative was to not use an essential advertised feature.

Re:Post Mortem of Google Outage on 14 December 2020 by jiggawatts on Friday December 18, 2020 @11:13PM (#25474953)
There are some "fun" horror stories of people hitting the Azure Resource Manager API quota limits. At least one of them was linked to some sort of shared service principal for the client org, so if anyone hit it, the whole organisation could get locked out.

It would first start to throw HTTP 429 codes occasionally, then you would get locked out for exponentially increasing times, up to two weeks or something absurd like that.

Even if you called support, there was not a lot they could do, because the rate limiter is a low-level thing built into an internal load balancer somewhere, and it is difficult to override it for a single account.

The worst part was that you could hit the limit while not actually taking any action! If you just had certain Azure Portal screens open, the JavaScript would refresh things in the background, constantly consuming the API rate limit quota. Some screens do so many calls that you'll hit the rate limit in a matter of minutes if you leave your browser on those. If you fail to close all browser sessions of all admins right away, you can lock yourself out for days.

Re:Post Mortem of Google Outage on 14 December 2020 by nullsense on Saturday December 19, 2020 @12:46AM (#25475397)
Yikes. That sounds nightmarish.
Re:Post Mortem of Google Outage on 14 December 2020 by dharmab on Saturday December 19, 2020 @01:06PM (#25479540)
My team struggled with this for two years. We ended up helping MSFT add a caching layer to the Kubernetes Azure cloud controller and creating a separate Azure subscription for each Kubernetes cluster.
Re:Post Mortem of Google Outage on 14 December 2020 by jugg1es on Friday December 18, 2020 @11:21PM (#25474994)
Ooh boy. Undocumented limitations caused major problems with us with AWS SQS. It is now in the documentation (maybe because I complained to our AWS rep), but SQS has pool of 20k messages that it will pull from when serving requests. If you are using a FIFO queue and you have 20k messages with the same message group ID in that buffer, then you are unable to process any other message regardless of how large the queue is. It caused multiple severe degradations until we rearchitected how messages are grouped. If only it had been in the documentation from day 1.

Gotta love it!

Re:Post Mortem of Google Outage on 14 December 2020 by shaicoleman on Saturday December 19, 2020 @09:16AM (#25477508)
Pretty scary that it just breaks without any error messages, and without an easy way to clean up the damage.

Queue overflows are not uncommon.

"For FIFO queues, there can be a maximum of 20,000 inflight messages (received from a queue by a consumer, but not yet deleted from the queue). If you reach this quota, Amazon SQS returns no error messages. If your queue has a large backlog of 20,000 or more messages with the same message group ID, FIFO queues might be unable to return the messages that have a different message group ID but were sent to the queue at a later time until you successfully consume the messages from the backlog."

Link to the documentation: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQS...

Re:Post Mortem of Google Outage on 14 December 2020 by jugg1es on Saturday December 19, 2020 @10:18PM (#25483536)
I only figured out what was happening by trial and error while trying to fix the production issue where I was moving 1000 messages at a time into a 2nd queue. Once I had dequeued 20k, everything starting pumping like normal. That's when I fired off an email to our AWS rep asking for confirmation from the SQS dev team. Within a couple weeks, the docs you just quoted were added.
Re:Post Mortem of Google Outage on 14 December 2020 by HeavyStorm on Saturday December 19, 2020 @08:30AM (#25477279)
Wow, that's a scary story.
Re:Post Mortem of Google Outage on 14 December 2020 by jugg1es on Saturday December 19, 2020 @10:19PM (#25483549)
Yea, we had a queue backlog of 3 million (that were bound by an SLA) by the time I figured out what was going on.
Re:Post Mortem of Google Outage on 14 December 2020 by dkarl on Friday December 18, 2020 @10:25PM (#25474711)
I had a similar experience with a SaaS. They let us run fine for months, then started degrading our service. When we contacted them, they tried to convince us we had a bug in our implementation. No, we confirmed we were using their service exactly as we intended to. They seemed to have designed their service with a particular use case in mind, and ours wasn't it. We tried multiple times to explain our use case and why their service was useful for us, because we didn't want them to think we were using the service in bad faith, but if they understood, they never let on. After much grumbling, they would lift the restrictions on us, but apparently not far, because we'd run into them again weeks or months later as our traffic increased. They were obviously unhappy with the way we were using their service and determined to cause issues for us, so we gave up and stopped using them.
Re:Post Mortem of Google Outage on 14 December 2020 by andreareina on Saturday December 19, 2020 @01:16AM (#25475523)
Google Maps^W Places API. Official limit is 100qps. Except that if your query has more than 20 results, the "next page" link doesn't work for between 1-2 seconds.
Re:Post Mortem of Google Outage on 14 December 2020 by marekdedic on Saturday December 19, 2020 @05:17AM (#25476475)
Yeah, same story here with Google Drive API. My app is getting rate limited, even though I am nowhere near the maximum requests per 100s. Just requesting things in bursts makes it trip. When you chat with support (not easy given that it's Google...), they usually refuse to make your quota higher because they don't see you hitting the current limit even remotely...
Re:Post Mortem of Google Outage on 14 December 2020 by aljarry on Saturday December 19, 2020 @07:48AM (#25477091)
Around 2 years ago in S3 there was an interesting quote issue - official documentation stated quotas per S3 prefix (kind of like folder path), but in practice it turned out only first 20+ characters of a prefix were taken into account for quotas, so our burst computations loading thousands of objects were mostly timing out. We had to add random prefixes at the beginning just to get around that. AWS updated their quota management to per-full-prefix, finally though.
Re:Post Mortem of Google Outage on 14 December 2020 by orf on Saturday December 19, 2020 @10:14PM (#25483519)
S3 has an interesting limit of about 60 LIST requests per bucket, depending on the number of prefixes/size of bucket.

They used to advertise 100 per second, but then they pushed a big update that doubled the read QPS limit, and conveniently left out the reduction in LIST qps from the docs.