{"id":18119659,"url":"https://github.com/mostlygeek/heroku-concurrency-test","last_synced_at":"2025-04-06T11:18:14.611Z","repository":{"id":6939781,"uuid":"8191308","full_name":"mostlygeek/heroku-concurrency-test","owner":"mostlygeek","description":"Test Heroku Dyno Concurrency","archived":false,"fork":false,"pushed_at":"2013-02-14T01:33:38.000Z","size":128,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-15T10:51:14.599Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mostlygeek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-14T00:49:40.000Z","updated_at":"2013-10-26T06:58:37.000Z","dependencies_parsed_at":"2022-09-15T15:52:43.305Z","dependency_job_id":null,"html_url":"https://github.com/mostlygeek/heroku-concurrency-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlygeek%2Fheroku-concurrency-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlygeek%2Fheroku-concurrency-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlygeek%2Fheroku-concurrency-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mostlygeek%2Fheroku-concurrency-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mostlygeek","download_url":"https://codeload.github.com/mostlygeek/heroku-concurrency-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247471521,"owners_count":20944158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-01T05:16:37.796Z","updated_at":"2025-04-06T11:18:14.586Z","avatar_url":"https://github.com/mostlygeek.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\nRapGenius wrote this [blog post](http://rapgenius.com/James-somers-herokus-ugly-secret-lyrics) \nabout how Heroku's routing mesh only allows one concurrent request / dyno. Regardless if the dyno can \nhandle more than 1 concurrent request at a time. \n\nEdit: After reading the blog post more carefully, it really only affects one process/request based\narchitectures like Ruby on Rails, PHP, Django, etc. Evented architectures are singled threaded\nso they don't suffer from the same concurrency problems.\n\n* [Source code on GitHub](https://github.com/mostlygeek/heroku-concurrency-test)\n* [Try it on Heroku](http://test-concurrency.herokuapp.com/)\n\n## About The Test\n\nThe button below will fire 15 concurrent HTTP requests to the server. The server (node.js) will \nwait 2000ms before returning an \"OK\". \n\nDepending on the browser you are using you will see all requests appear in an `in-flight` status.\nThen they will come back in batches of 5 or 6. This is normal behaviour as modern browsers will\nfetch things concurrently. \n\nTo get around caching, a little cache buster is appended to the URLs.\n\nThe round trip times are rounded to the nearest 200ms to make it easier to see groups \nof concurrent request. \n\n## Interpreting the Results\n\nIf results come back sequentially at times of 2000ms, 4000ms, 6000ms, etc. then \nthe routing mesh only allows 1/req per dyno. \n\nIf you see groups of requests come back at the same time then each dyno can \nhandle multiple concurrent requests.    \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmostlygeek%2Fheroku-concurrency-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmostlygeek%2Fheroku-concurrency-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmostlygeek%2Fheroku-concurrency-test/lists"}