Even for the applications that need reactive I do wonder if anyone has actually done the financial analysis between the extra developers and development time needed for reactive vs just throwing more servers at the problem.

C10k is basically just impractical without reactive / async / coroutines / that style. But with it it's extremely achievable on even midrange consumer hardware depending on the specific workload.

Nah, you could easily have much more than 10k threads on regular hardware for a long time with the traditional threads.

c10k was coined in the last millenium when a brand new PC would have 128 MB of memory and a single core 400 MHz cpu. And people were doing it with async IO, not threads back then. (Around the same time Java people got interested in Volanomark which is a similar thing but with threads - since Java didn't even have nonblocking IO then).

See eg this about 100k+ threads on Linux in 2002: https://lkml.iu.edu/hypermail/linux/kernel/0209.2/1153.html .. which mostly concerns itself with conserving memory address space since they are dealing with the 32-bit 4GB limitation of decades past.

(c10k was also about OS TCP stack limitations that were soon fixed)

C10k is pretty obsolete problem now, ten thousand threads is pretty trivial on modern machines. With modern load balancing you dont even have to worry about that problem any more. And that was before Java 25.

Modern servers yes, still has poor performance on consumer hardware even if it's technically achievable. That also disregards the kernel memory and thread contention overheads that eat into effective performance.

It's obsolete not just because of new hardware but because we got better ergonomics for these new programming styles.

That is completely different from what I’m discussing. You can have millions of virtual threads without ending up in reactive hell. Even still without virtual threads what’s more expensive 2x the dev team or a few more servers?

Depends on how many times the few more servers are duplicated. Getting an extra server for on-premises installed products is worse than pulling teeth. It’s not one server, it is one server times a thousand.

I can assure you the differences between virtual threads and reactive is not a thousand.