并发如何突破端口数65535的限制

m0_37837425 2019-09-14 08:38:50
大家好,我在做IM系统测试的时候发现,连接数可以达到100万,但并发请求(即同时发送消息的QPS)超过65535的时候,系统就挂了。请问像腾讯这样的大型IM是如何解决这个问题的?
...全文
1129 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
铖邑 2019-09-29
  • 打赏
  • 举报
回复
引用 12 楼 stherix 的回复:
一般都是负载均衡 集群配置 另外 你的服务器崩绝对不是端口数的问题 连接的客户端再多,你服务器也只要使用一个端口 肯定是代码里有错误,比如连接池大小用ushort等等 需要查看错误日志,看问题出在哪
我看楼主就不像是有心想跟我们讨论问题的。 另外,他所说的端口可能不是我们想的那个端口。现在有的人讨论问题呢,直接模糊专业术语,搞得讨论半天根本不在一个点上。就好比说端口这个术语吧,我以前跟人家讨论过,结果发现说了半天,他指的是连接。我觉得吧,专业性的问题,最好是用专业术语,你不能说一个西瓜是冬瓜,否则没办法讨论了
stherix 2019-09-29
  • 打赏
  • 举报
回复
一般都是负载均衡 集群配置 另外 你的服务器崩绝对不是端口数的问题 连接的客户端再多,你服务器也只要使用一个端口 肯定是代码里有错误,比如连接池大小用ushort等等 需要查看错误日志,看问题出在哪
铖邑 2019-09-28
  • 打赏
  • 举报
回复
引用 10 楼 m0_37837425 的回复:
大家都没有回答到我的核心问题,我的问题是写的并发高于6万/秒,进程就会挂,也就是超过了端口的数量,没超过不会有问题。
或许大家的回答没切中要害,但是楼主有没 想过一个问题,你这个问题本来就含有一个悖论,换句话说,当你提出这个问题的时候,不见得考虑过你所提出这个问题,实际上存在矛盾的。 首先,如果你这个服务器是一个TCP服务器的话,怎么可能会有你所说的端口数超6万的存在呢?一般我们TCP服务器都是绑定一个端口,然后不管连进来的客户端达到多少数量,它就一个端口而已,怎么会存在端口数超量的问题呢? 那么,难道你说的是UDP服务器,那么你这个服务器的响应机制是怎么样的呢?当一个客户端发数据报上来,服务器就创建一个socket与它通信吗?如果是这样,这个服务器的资源足够使用吗?当客户端不再活跃的时候,这个资源要释放吗?这里面有很多问题要解决了,而这些不是我们这些外人说几句话就能解决的了。
m0_37837425 2019-09-28
  • 打赏
  • 举报
回复
大家都没有回答到我的核心问题,我的问题是写的并发高于6万/秒,进程就会挂,也就是超过了端口的数量,没超过不会有问题。
羽飞 2019-09-19
  • 打赏
  • 举报
回复
引用 6 楼 SuperDay 的回复:
[quote=引用 楼主 m0_37837425 的回复:]
大家好,我在做IM系统测试的时候发现,连接数可以达到100万,但并发请求(即同时发送消息的QPS)超过65535的时候,系统就挂了。请问像腾讯这样的大型IM是如何解决这个问题的?


大型的IM服务器,是通过多台服务器的集群来解决连接数超多的问题[/quote]
你们的单台服务器可以到多少连接?理论上可以到百万吗?主要限制是在哪里
羽飞 2019-09-19
  • 打赏
  • 举报
回复
引用 5 楼 SuperDay 的回复:
[quote=引用 1 楼 羽飞 的回复:]
那楼主知道超过65535就挂在哪里吗?知道现象找原因,把系统报错,或者out of memory,或者程序崩溃,都有原因。
发送消息使用的是TCP还是UDP。测试客户端是一台还是多台?
TCP连接受限制于四元组(IP,PORT, IP,PORT),服务端的IP和PORT是固定的,但是客户端的IP和PORT还是很多的,所以如果客户端只有一台机器那受PORT个数限制。PORT的个数也不是65535,有一些是系统保留的不能用的。


虽然端口号不会上去,但是socket有可能达到上限的啊,如果连接数过多,就像linux系统,它有个最大打开文件数的设置[/quote]
是的,所以要看下报错的原因,可能就是自认为是这个错误,但实际不一定。
  • 打赏
  • 举报
回复
不频繁传输数据的服务器(一般用户只是登记到服务器,主要通信是用户间直接完成的,需要服务器中转的很少),连接用户数几十万上百万没有问题,参考电骡服务器,一般最大用户数限制是几万到几十万。
铖邑 2019-09-17
  • 打赏
  • 举报
回复
引用 楼主 m0_37837425 的回复:
大家好,我在做IM系统测试的时候发现,连接数可以达到100万,但并发请求(即同时发送消息的QPS)超过65535的时候,系统就挂了。请问像腾讯这样的大型IM是如何解决这个问题的?
大型的IM服务器,是通过多台服务器的集群来解决连接数超多的问题
铖邑 2019-09-17
  • 打赏
  • 举报
回复
引用 1 楼 羽飞 的回复:
那楼主知道超过65535就挂在哪里吗?知道现象找原因,把系统报错,或者out of memory,或者程序崩溃,都有原因。 发送消息使用的是TCP还是UDP。测试客户端是一台还是多台? TCP连接受限制于四元组(IP,PORT, IP,PORT),服务端的IP和PORT是固定的,但是客户端的IP和PORT还是很多的,所以如果客户端只有一台机器那受PORT个数限制。PORT的个数也不是65535,有一些是系统保留的不能用的。
虽然端口号不会上去,但是socket有可能达到上限的啊,如果连接数过多,就像linux系统,它有个最大打开文件数的设置
pluminsnow 2019-09-17
  • 打赏
  • 举报
回复
服务端
引用 1 楼 羽飞 的回复:
那楼主知道超过65535就挂在哪里吗?知道现象找原因,把系统报错,或者out of memory,或者程序崩溃,都有原因。 发送消息使用的是TCP还是UDP。测试客户端是一台还是多台? TCP连接受限制于四元组(IP,PORT, IP,PORT),服务端的IP和PORT是固定的,但是客户端的IP和PORT还是很多的,所以如果客户端只有一台机器那受PORT个数限制。PORT的个数也不是65535,有一些是系统保留的不能用的。
这位兄弟说的很清楚了,不是端口数的限制问题。 从别的方面考虑,会不会是你的变量使用了16位数字做记录,达到65535会翻转。 上面也是随意想想可能出现问题的情况之一,还是得从问题具体现象作分析。
轻箬笠 2019-09-16
  • 打赏
  • 举报
回复
既然是这么大的量,没有做负载均衡吗?
m0_37837425 2019-09-16
  • 打赏
  • 举报
回复
客户端我有很多台,服务器端也绑定了很多个端口
羽飞 2019-09-15
  • 打赏
  • 举报
回复
那楼主知道超过65535就挂在哪里吗?知道现象找原因,把系统报错,或者out of memory,或者程序崩溃,都有原因。
发送消息使用的是TCP还是UDP。测试客户端是一台还是多台?
TCP连接受限制于四元组(IP,PORT, IP,PORT),服务端的IP和PORT是固定的,但是客户端的IP和PORT还是很多的,所以如果客户端只有一台机器那受PORT个数限制。PORT的个数也不是65535,有一些是系统保留的不能用的。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧