服务器对外的连接数受什么因素的限制?

Torreson 2017-04-03 02:09:17
服务器接受的连接数跟什么有关系(服务器作为服务端提供接口服务方时)
1. 服务器的相关配置( ulimit -n)
2. 应用能接受的连接数,和性能
3. 应用业务情况,传输的数据量,跟带宽,内存,cpu有关(单机TCP并发连接数,实际上单机并发连接数肯定要受硬件资源(内存)、网络资源(带宽)的限制)

应用接受的接口服务,有些接口需要去请求其他服务。
那么服务器对外请求的连接数受什么因素的限制(服务器作为客户端调用方时)?请各位大神科普一下
...全文
3468 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
服务器接受的连接,比如作为web服务器时,受web服务的限制吧,tomcat据说只支持2000个http连接?但这个可以用集群来解决吧 服务器发出的连接,应该受到本服务器资源的限制和对方服务器可接受的连接限制
Torreson 2017-06-17
  • 打赏
  • 举报
回复
引用 13 楼 tianfang 的回复:
服务器的可打开文件数,CPU,内存都是可以设置或增加的 只有TCP连接数是受到TCP协议严格限制的,这个才是最主要的限制因素,突破这个限制一般采用多网卡,一卡多IP的方式突破。
在理!
tianfang 2017-06-12
  • 打赏
  • 举报
回复
服务器的可打开文件数,CPU,内存都是可以设置或增加的 只有TCP连接数是受到TCP协议严格限制的,这个才是最主要的限制因素,突破这个限制一般采用多网卡,一卡多IP的方式突破。
Torreson 2017-06-10
  • 打赏
  • 举报
回复
引用 10 楼 u013726108 的回复:
我觉得楼主的问题有点问题了,最大访问数应该和web服务员的最大连接数有关系,比如Tomcat的最大连接数3000,但是根本就不会设置为最大,但是使用Nginx就可以使用负载均衡,使用多台服务器,就可以让更多的客户端来进行访问了,所以最大连接数和端口是没有任何关系的,还要一点就是你的web服务是开启的一个端口,那就和其他的端口更扯不上什么关系了,如果说的不对请大家纠正,希望可以互相学习。
这里说的是服务器作为客户端,对外请求其他服务器的限制。请求其他服务器,肯定会用到本地临时端口。
Torreson 2017-06-10
  • 打赏
  • 举报
回复
引用 9 楼 peterpeng881003 的回复:
连接数跟你电脑的CPU以及网络资源内存有关联,跟端口一点关系都没有。
这里说的是服务器作为客户端,对外请求其他服务器的限制。请求其他服务器,肯定会用到本地临时端口。
Choerodon2 2017-06-01
  • 打赏
  • 举报
回复
连接数跟你电脑的CPU以及网络资源内存有关联,跟端口一点关系都没有。
Choerodon2 2017-06-01
  • 打赏
  • 举报
回复
连接数跟端口有什么关系?
小秦亲 2017-06-01
  • 打赏
  • 举报
回复
我觉得楼主的问题有点问题了,最大访问数应该和web服务员的最大连接数有关系,比如Tomcat的最大连接数3000,但是根本就不会设置为最大,但是使用Nginx就可以使用负载均衡,使用多台服务器,就可以让更多的客户端来进行访问了,所以最大连接数和端口是没有任何关系的,还要一点就是你的web服务是开启的一个端口,那就和其他的端口更扯不上什么关系了,如果说的不对请大家纠正,希望可以互相学习。
Torreson 2017-05-21
  • 打赏
  • 举报
回复
上述不是本人所写,是从一篇PDF摘取,出处不详
Torreson 2017-05-21
  • 打赏
  • 举报
回复
补充: 对外发请求会有time_wait问题。 tcp 协议层并没有长短连接的概念 ,因此不管长连接还是短连接,连接 建立->数据传输->连接关闭的流程和处理都是一样的。 正常的 TCP 客户端连接在关闭后,会进入一个 TIME_WAIT 的状态,持续的时间一般在 1~4 分钟,对于连 接数不高的场景,1~4 分钟其实并不长,对系统也不会有什么影响, 但如果短时间内(例如 1s 内)进行大量的短连接,则可能出现这样一种情况:客户端所在的操作系统 的 socket 端口和句柄被用尽,系统无法再发起新的连接! 举例来说:假设每秒建立了 1000 个短连接( Web 场景下是很常见的,例如每个请求都去访 问 memcached),假设 TIME_WAIT 的时间是 1 分钟,则 1 分钟内需要建立 6W 个短连接, 由于 TIME_WAIT 时间是 1 分钟,这些短连接 1 分钟内都处于 TIME_WAIT 状态,都不会释放,而 Linux 默认的本地端口范围配置是:net.ipv4.ip_local_port_range = 32768 61000 不到 3W,因此这种情况下新的请求由于没有本地端口就不能建立了。 解决的其中一个方案: 通过调整内核参数解决, vi /etc/sysctl.conf 编辑文件,加入以下内容: net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30
tianfang 2017-04-09
  • 打赏
  • 举报
回复
不是算出来的,强制使用可以用六万以上,但是客户端一般连接过程中一直占有cpu资源,不一定适应nio模式,所以不会用到很多连接
Torreson 2017-04-08
  • 打赏
  • 举报
回复
引用 1 楼 tianfang 的回复:
tcp协议,一个IP只能有65536个端口,那么最多只能这么多的客户端连接,实际上一般只能做到2-3w个
2-3w个,这个数据怎么来的?
Torreson 2017-04-08
  • 打赏
  • 举报
回复
+ 许多应用程序都可以使用 T C P 或 U D P 来 传 送 数 据 。 运 输 层 协 议 在 生 成 报 文 首 部 时 要 存 入 一 个 应 用 程 序 的 标 识 符 。 T C P 和 U D P 都用一个 1 6 b i t 的 端 口 号 来 表 示 不 同 的 应 用 程 序 。 T C P 和 U D P 把源端口号和目的端口号分别存入报文首部中。(摘自TCP-IP详解1.6) + 客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该 客户程序时才存在,而服务器则只要主机开着的,其服务就运行。 <br/> 大多数 T C P / I P 实 现 给 临 时 端 口 分 配 1 0 2 4 ~ 5 0 0 0 之 间 的 端 口 号 。 大 于 5 0 0 0 的 端 口 号 是 为 其他服务器预留的( I n t e r n e t 上并不常用的服务 ) 。(摘自TCP-IP详解1.9) 程序可以用的临时端口有什么限制??
tianfang 2017-04-04
  • 打赏
  • 举报
回复
tcp协议,一个IP只能有65536个端口,那么最多只能这么多的客户端连接,实际上一般只能做到2-3w个

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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