CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 2k
Replies: 76 comments · 5 replies
-
Any chance of getting more significant levels of concurrency being tested? At least 1,000+ concurrency, and ideally 10,000+. Concurrency seems to be exceptionally under-represented in these tests. |
Beta Was this translation helpful? Give feedback.
All reactions
-
It seems useless for an web framework for such an concurrent,maybe 100~200 is the max |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 1 -
π 4
-
Respectfully, I disagree. High concurrency can easily end up flooding a web framework, especially where pub/sub patterns are implemented as well as when long polling or WebSocket reconnection patters are required. The level of concurrency translates to money (operating costs) and deployment considerations when choosing a framework, as a higher concurrency framework translates to less server instances (i.e., dynos on Heroku). I would love to seeing a 10K analysis as it would definitely have an impact on choices people make. |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 4
-
Hi @robertmeta. Thanks for the input! Would you mind reviewing the thread on issue #49 regarding concurrency levels and perhaps add to that conversation? It's my opinion that higher concurrency levels beyond what we have provided here would be useful if we were ready to benchmark high-connection low-utilization Websockets. But presently we are testing high-traffic traditional HTTP where responding to requests as quickly as possible is the paramount objective. As with anything though, I'm prepared to be proven wrong. :) |
Beta Was this translation helpful? Give feedback.
All reactions
-
I'm with bhauer, this isn't, "how many users can we serve per server on our chat service". |
Beta Was this translation helpful? Give feedback.
All reactions
-
Some things I would like to see in the future:
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Hi @drewcrawford. Thanks for the ideas! No rush, since this is just long-term planning, but I am curious about your second idea concerning multi-row reads and writes. In my head I conceive of that as executing a single Your third idea was echoed by another reader, so that's got "high demand" from my perspective. :) A test of relationships is a great idea too. |
Beta Was this translation helpful? Give feedback.
All reactions
-
A commenter on HN named Terretta suggested the following. I'm just copying this here for easy future reference.
|
Beta Was this translation helpful? Give feedback.
All reactions
-
Another HN commenter named kbenson suggested a goal of defining a simple blog-style application. This is ambitious but we've already passed the threshold at which we require community contributions in order to move forward (even adding one more simple test will require several pull requests from the community to see that test implemented in more than a small sampling of the frameworks). With that in mind, I think it's a great item to have on the long-term plan. If we keep the requirements simple, it could be done. |
Beta Was this translation helpful? Give feedback.
All reactions
-
or
The key insight being
The interesting thing about this test is that it does reads/writes in the same connection. Whereas in the single row access case the dominating factor might be setting up the connection or acquiring it from a shared pool, here the test is about how quick the ORM bindings are once they're in place and how fast you can move memory between the DB process and the application process. |
Beta Was this translation helpful? Give feedback.
All reactions
-
@drewcrawford, thanks! I understand what you have in mind now. For some reason, I read your original statement to imply something much more complicated. But you simply mean for a test that operates over multiple rows in a single resultset, in the case of reading, with per-row functionality occurring within the application rather than within SQL functions. Your pseudo-code illustrates the idea well. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Note that requirements for each test type are now posted at the results web site: https://www.techempower.com/benchmarks/#section=code |
Beta Was this translation helpful? Give feedback.
All reactions
-
I just edited this issue to indicate the updates test is "present," and to add quick notes about the need to implement plaintext tests (both small and large payloads) and a larger work-load JSON test (something involving a complex and large data structure). |
Beta Was this translation helpful? Give feedback.
All reactions
-
A test that exercises form rendering, validation, and CSRF protection could be interesting. I'm pretty sure most of the full stack frameworks have utilities for those. Maybe the test would have three parts? One server-side implementation, but three sets of wrk parameters: (a) GET the form, (b) POST the form with errors, (c) POST the form successfully. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I've added test type 16, a more complex routing table/map/tree based on Christopher Lord's comment on the Google Group: https://groups.google.com/d/msg/framework-benchmarks/r0B3tPaCMPs/_PG1_p1McbwJ |
Beta Was this translation helpful? Give feedback.
All reactions
-
Heavy model test:
This test may reveal cost of class loading [1], method calling and GC. [1] Some languages like php loads class for each request. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I think a pretty simple additional test would be serving static context of different sizes (100k, 1m, 10m, 100m?). Frameworks that perform similar to (maybe even better than) Apache httpd in this domain could make life a lot easier for full-blown web applications than those that serve small content extremely well but degrade significantly when content sizes get large. With our framework PLAIN, for instance, we generate dynamic content of 3D data (JT, 3DXML, CATIA) that quickly reaches sizes >100m. Streaming those to files and then serve them with an httpd or the like would be a big drawback in terms of performance and complexity. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I agree that HTTPS between microservices, or between the load balancer and web frontend is a good idea in general. Benchmarking this would bring visibility to the performance overhead of frameworks in this area (an aim of the test would be to be directly comparable to a http test so the https overhead could be measured for each framework). |
Beta Was this translation helpful? Give feedback.
All reactions
-
I think is Redis a great use case example. Communication is performed securely using a secure tunnel (such as using Spiped, Ghostunnel, etc'. The separation of concerns between security and services is important. It allows security patches to be easily implemented across the board without patching each framework / service separately. Also, the security implementation is often superior to a BYO solution.
I would love have benchmarks about TLS/SSL, but I'm not sure the benchmarks should include any frameworks. Once we use a framework's internal TLS/SSL in a benchmark, we're telling developers that this is a production grade setup. I'm not even sure I want to know how many applications in the wild use security implementations with known vulnerabilities... it a source for worry for me on SO whenever someone asks about implementing TLS/SSL in a backend application server. Than again, I'll probably implement TLS/SSL and let security be damned - the pressure to add TLS/SSL is too great and (re)explaining why security concerns should be separated from the framework is getting tiring. |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 1
-
Right an article on a site dedicated to edge services (F5) ... Also most of your "edge" services will use the exact same underlying lib. Eg ngnix using openssl. And if we take openssl it's often part of the os. So the big issue is ... How did they implement it? Did they do a lot of copying and allocations? Are there added bottle necks? As someone who works in a very secure environment we are required to have a high security edge layer (no one said I was ditching that and we actually have many layers there) but we are also required to have ssl/TLS "Inside" that security ring. To assume a security layer and you are done in banking, health, government, education is dangerous and in some cases illegal |
Beta Was this translation helpful? Give feedback.
All reactions
-
And... if memory serves, openssl uses insecure defaults... but maybe that changed.
In your experience, do you use a framework's SSL/TLS implementation for production (to secure internal network communication), or do you tunnel the communication through secure channeling (i.e., I agree that if secure production environments rely on the framework's SSL/TLS layer, than it's important to both test and benchmark that option. |
Beta Was this translation helpful? Give feedback.
All reactions
-
websockets +1 |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 2
-
Commenters above who've thoughts about TLS/SSL tests please see and weigh in on the stand-alone issue (#3290). |
Beta Was this translation helpful? Give feedback.
All reactions
-
Many microservices are running in 'tiny' containers. It would be interesting to see how the stacks behave in such an environment. For example: allocated 1 CPU and 500MB RAM. |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 5
-
For some time I've been running some of the TechEmpower benchmarks and trying to make sense of the results. One thought that keeps coming back is that these benchmarks are stressing the frameworks at 100% cpu. That should not be the normal operating mode of a server. I'd be interested to see latency vs throughput numbers. wrk2 can be used for such benchmarks. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Added a future HTTP/2 test type based on the following comment: #2978 (comment) |
Beta Was this translation helpful? Give feedback.
All reactions
-
h2load could be a great option for benchmarking both HTTP/2 and SSL endpoints. |
Beta Was this translation helpful? Give feedback.
All reactions
-
HTTP2 +1 |
Beta Was this translation helpful? Give feedback.
All reactions
-
It seams the only performance you measure is response time.
as it was done as described in this article : https://jaxenter.com/energy-efficient-programming-languages-137264.html Github Repo : https://github.com/greensoftwarelab/Energy-Languages This only issue about greensoftwarelab tests is they used the Debian Benchmarks Game which only apply to few use case far away of the web use. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I am also interested in the performance of HTTP/3. Though there are few libraries supporting it now and HTTP/2 is still on the waiting list, adding this test type could give the library contributors a motive and speed up its support, especially in the more popular web frameworks. There is a WRK variant supporting HTTP/3 now so the tool should be ready. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Vert.x supports connecting to the database with domain sockets, with both PostgreSQL and MySQL. I am wondering how much performance improvements this brings, especially in IO-intensive workloads. Therefore, as far as I'm concerned, adding a domain socket variant of the "single database query" test would be good. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I would think all frameworks let you easily point to a domain socket instead of using tcp/ip. Having said that, from what I've seen, most web database apps have 3 layers, with multiple app servers. Since this can't scale with domain sockets, not sure what this provides. |
Beta Was this translation helpful? Give feedback.
All reactions
-
π 2
-
So you mean as done here with the Vert.x PostgreSQL Client you can just pass the domain socket file location to the
Just a personal opinion here. I think the monolithic architecture is coming back these years with the hardware manufacturers' efforts to increase core count, memory size, and transmission speed. The new AMD EPYCβ’ 9965 is 192c384t with support for terabytes of memory for example. And Stack Overflow is based on such a kind of architecture as illustrated in this video. Although in such a case the server app and the database are not deployed on the same server, I believe this can be done with a machine that's powerful enough. And so to sum up, I think a monolithic server with an adequate hardware architecture can satisfy the scaling needs of most small-to-medium-sized apps, and reduce some overhead compared to a microservice architecture. |
Beta Was this translation helpful? Give feedback.
All reactions
-
Building on "13. Future: JSON responses with larger workloads (complex data structure serialization).", I'd like to propose a variant using Protobuf, as complex data structure serialization is where Protobuf shines. |
Beta Was this translation helpful? Give feedback.
All reactions
-
I think that's better to first fix the actual test without fake apps. |
Beta Was this translation helpful? Give feedback.
All reactions
This discussion was converted from issue #133 on December 16, 2020 21:58.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
We plan to add new test types over time. The following is a summary of tests we have presently and those we plan to specify and implement in the future.
For the time being, we're still interested in relatively simple tests that exercise various components of the frameworks. But we're also interested in hearing your thoughts on more tests for the long term. If you have any ideas, please post them here.
Beta Was this translation helpful? Give feedback.
All reactions