Java单机并发量最高能到多少

谢邀请,Java单机并发量最高能到多少?

如果要回答这个问题需要预设的前提很多,因为一个服务可支持的并发量和吞吐量绝对不是仅仅由什么并发框架、IO类型决定的,而是取决于这个服务的瓶颈在哪?是数据库还是外部其他的服务?还是当前机器的CPU?

如果你现在的服务瓶颈主要在当前机器的CPU(可以通过观察CPU使用率等指标),那你把同步改成异步IO性能只会更差,因为会增加机器的线程切换和维护连接成本。而如果你的服务主要瓶颈是在数据库,那你改成并发IO只会增加等待数据库连接线程数,进而降低性能表现

所以正确的做法是:
用一些profile工具(开源btrace,一般大公司内都会有自己的产品)找到服务的主要资源消耗和瓶颈具体case分析主要瓶颈在数据库,看下是否有慢sql,是否索引有问题?主要瓶颈在网络传输,看下是否调用客户端和服务端跨机房调用?主要瓶颈在机器CPU,看下是否需要提升机器配置,水平扩展服务器主要瓶颈在机器连接数,看下是否需要将阻塞IO改造成非阻塞IO3. 观察改造后的效果

所以你看性能改造这个事其实是一个不断观察、改造、验证的过程,就像每逢大促,大的电商都要做一轮又一轮的梳理、压测,其实就是为了摸到服务整体的极限和瓶颈在哪,并没有什么一劳永逸,一击必中的银弹

以上

■网友
Akka的实际性能应该不会差,可以用playframwork写个例子试试,playframework的核心就是akka,在akkas基础上包装了一个http层,是一个很好的http server框架。akka的性能应该不会差,具体值还得自己测试。听说国内挖财已经在用playframework。
如果只想测试java的最大qps,可以测试下netty,netty应该是java平台下性能最强悍的网络框架。如果哪个框架性能比netty还好请告诉我。
用netty的hello server例子试试,开发机上并发到上万应该轻而易举,弄到好点的服务器上跑个10万的QPS问题也不大。Netty自带了一个http helloworld server的例子搜索 netty examples可以找到。自己跑跑试试就知道了。
【Java单机并发量最高能到多少】 注意测试的时候用wrk 不要用其他的工具,比如ab,当并发过高的时候ab自己就是瓶颈,而wrk轻松过十万。

■网友
这个还得看你主机核心数量和内存容量吧,自己写个测一下最靠谱。


    推荐阅读