首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单个Java服务器上处理超过一百万个并发客户端?

如何在单个Java服务器上处理超过一百万个并发客户端?
EN

Stack Overflow用户
提问于 2015-10-21 21:23:58
回答 3查看 1K关注 0票数 2

我正在构建一个NIO Java TCP服务器,它将能够容纳多达一百万个并发客户端。不幸的是,它必须是TCP连接。

实现这一目标的一些实践是什么?我从Node.JS处理模型(我想,还有经典的NIO方法)中获得灵感:即一个事件循环线程和用于卸载长时间运行任务的工作线程。

我读到过有人实现了超过一百万个并发连接。但是,开放套接字的数量怎么可能超过可用端口的数量呢?操作系统中打开文件的数量限制如何?

EN

回答 3

Stack Overflow用户

发布于 2015-10-21 21:29:22

在一个端口上接受一个线程。线程池。或者调度一个请求(特别是在高负载时),或者立即将其传递给工作线程。

票数 2
EN

Stack Overflow用户

发布于 2015-10-21 23:09:28

通过维护连接列表,为传入数据调用select(),并在线程池/执行器中进行处理,按照前面的答案手动完成。

或者在nio2中使用异步套接字,它可以为您完成上述所有工作。

另一种选择是使用高级框架,如Mina或Netty,它添加了可重用的处理程序等。

票数 0
EN

Stack Overflow用户

发布于 2015-10-23 05:53:15

要回答您实际提出的唯一特定问题,接受的套接字的数量与可用端口的数量无关,因为它们都共享相同的本地端口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33260539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档