Thundering Web Requests

Part 0: What and Why

Venkatesh-Prasad Ranganath
2 min readJul 3, 2019


A friend of mine mentioned using Tornado and Python to implement microservices. Out of curiosity, I asked “why Tornado?” and I did not get a definitive reply.

This got me digging into web service-related technologies that I had heard about but I did not know and had not used. Interestingly, while reading about these technologies, I stumbled on the C10K problem, the web incarnation of the thundering herd problem common in concurrent systems.

At this point, I figured what better way to learn about different web-serving technologies than to explore them in the context of thundering herd problem. The plan was to

Implement a simple web service using different technologies and see how they fare against thundering herd of web requests.

Since the exercise required the simulation of a thundering herd, I decided to

Implement web clients to simulate thundering herd of web requests.

Since I like trying out different programming languages, I figured it would be fun to implement the clients in at least two different languages.

Finally, since I had been itching to use my small cluster of Raspberry Pis for experimentation, I decided to use the cluster to evaluate the technologies in a constrained yet truly distributed setting.

Given the above context, I have documented this exercise in the following blog posts.

  1. Observations from Implementing Web Clients
  2. Observations from Implementing Web Services
  3. Client-side Observations about Web Service Technologies: Using Apache Bench
  4. Server-side Observations about Web Service Technologies: Using Apache Bench
  5. Server-side Observations about Web Service Technologies: Using Custom Web Clients
  6. Observations about Web Client Technologies

Besides describing the experiment and reporting various results, I have tried to describe my experience with and observations about differing languages and technologies that I used to implement clients and servers.

All of the code and artifacts from the experiment is available on GitHub.

I hope you will find these posts and the code artifacts both interesting and useful. If you have any feedback or suggestions, then please leave a comment.



Venkatesh-Prasad Ranganath

Engineer / X-Academic / X-Researcher curious about software and computing.