5 ms·
You can support 10,000 requests/second hitting a servlet engine, with dynamic templates, and backend DB calls, on one quad core box? I'd like to give you a job
by modoc 17y ago
You can support 10,000 requests/second hitting a servlet engine, with dynamic templates, and backend DB calls, on one quad core box? I'd like to give you a job.
Maybe I've been working with heavyweight frameworks too long, but that seems an order of magnitude off at least. Any stats on Servlet JVMs that can do 10k requests/second on a single quad core?
- deleted 17y ago[deleted]
- antonovka 17y agoYou can support 10,000 requests/second hitting a servlet engine, with dynamic templates, and backend DB calls, on one quad core box?. 5-10k, depending; a local instance of a recent webapp I wrote can run 5.9k requests/sec on a simple page JSP-templated page backed by a database request. It's running on tomcat, using servlets with a lightweight REST API, and postgresql. The webapp I'm working on right now has the following performance profile for a page that fetched the user-list from the backing database. Not as fast, but 2k req/sec is not bad, and I haven't done any profiling on the new stack we're using at all yet: Server Software: Jetty(6.1.x) Server Hostname: localhost Server Port: 8080 Document Path: /users Document Length: 5855 bytes Concurrency Level: 4 Time taken for tests: 0.508 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 6045474 bytes HTML transferred: 5855000 bytes Requests per second: 1968.41 [#/sec] (mean) Time per request: 2.032 [ms] (mean) Time per request: 0.508 [ms] (mean, across all concurrent requests) Transfer rate: 11621.09 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 1 2 1.7 2 22 Waiting: 1 2 1.7 2 22 Total: 1 2 1.7 2 22 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 2 90% 3 95% 3 98% 4 99% 12 100% 22 (longest request) I'd like to give you a job. Something in your tone tells me you're not serious ... Maybe I've been working with heavyweight frameworks too long, but that seems an order of magnitude off at least. I couldn't say; I do have local 3rd party spring-based webapps that take 5 minutes just to start up, not to mention 300ms+ to render a single page, so I wouldn't be surprised.
- look_lookatme 17y agoYour methodology doesn't reflect actual usage of the site. I suspect there hardly an (if any) writes happening when you hit /users, the database is repeatedly fetching a hot query (or you are pulling from a cache that isn't changing because there are no writes happening), your dataset could be minimal, etc.
- antonovka 17y agoThat may be partially true[1], but I'd challenge you to re-implement this non-optimized case (ie, this is a rough webapp, no caching, etc) in another runtime on similar hardware and see: 1) Whether it can support anywhere near the same level of concurrent requests with similar response times. 2) How much complexity (nginx + unicorn + memcached + puppies) is required to achieve this in comparison to a servlet engine (eg, tomcat) and your webapp. [1] Most web applications are read-heavy, low on writes, and scaling up write capability generally requires scaling up the database. You can grow quite a bit with simple caching and monolithic database scaling before having to tackle more complex distributed data architectures.
- zepolen 17y agoIf those 1968.41 [#/sec] were on a quad core then python can match it.
- deleted 17y ago[deleted]
- cjbos 17y agoI maintain an internal app at work that handles @3k requests per second per dual core server. Site runs on coldfusion on windows. Its a conferencing app so users poll every second for updates. Nothing special about it, just putting this out there to show that the bog standard install of a jvm can be pretty powerfull
- aaronblohowiak 17y agoColdfusion runs on the JVM?