Pull Queues: They can't really pull - Horizontal scaling is a must

83 views
Skip to first unread message

Kaan Soral

unread,
Jun 28, 2018, 8:44:09 AM6/28/18
to Google App Engine
About a month ago, I tested Pull Queues for a term project, attached my test files and the resulting paper (keep in mind that, since I allocate a short time for academic stuff, the quality is low :)

I chose Pull Queues, as they let me down hard in the past, I was hoping to be surprised this time, but I sadly wasn't

As a TL;DR, the results are:

1) Pull Queues are built to scale with push operations (add operations don't fail), however, each single task, takes 4 to 120ms+ to create (If you add 100 tasks in a batch, 400ms to 12000ms or more)
2) Pull Queues crumble with pull operations, per the documents, you can do 10 lease operations per second (each with 1000 tasks, assumably), theoretically leasing 10.000 tasks / second, you can't, you can't even lease 1 task per millisecond on average, 600 tasks/second is a more realistic guess, the performance is unreliable, dwindles further when you add tasks in parallel too, it's clear the internal black box is built to handle add operations, but not lease operations
3) [Side Info, Suggestion] There are Interface bugs, running push queue tasks appear as not running, leased pull queue tasks appear as not leased, it's very easy to re-run an already running push queue task, it should be impossible to re-run an already running task

My personal result: Don't use Pull Queues, or use them by creating multiple queues (called horizontal scaling I assume, not very big on terms myself), and dividing data into queues, assumably by the modulus of your tasks' tag (In these tests, I haven't even included tags, I assume it will only make things worst, in the past, I tried using pull queues with tags, and lost more than 2 months of my life)
pullqueues.zip
Reply all
Reply to author
Forward
0 new messages