这里再补充一点小知识,理论上一台机器能够支撑多少个连接,有没有同学知道?

首先,在确定最大连接数之前,大家先跟我来先了解一下系统如何标识一个tcp连接。系统用一个四元组来唯一标识一个TCP连接:(source_ip, source_port, destination_ip, destination_port)。即(源IP,源端口,目的IP,目的端口)四个元素的组合。只要四个元素的组合中有一个元素不一样,那就可以区别不同的连接,

比如: 你的IP地址是11.1.2.3, 在8080端口监听

那么当一个来自 22.4.5.6,端口为5555的连接到达后,那么建立的这条连接的四元组为 : (11.1.2.3, 8080, 22.4.5.6, 5555)

这时,假设上面的那个客户(22.4.5.6)发来第二条连接请求,端口为6666,那么,新连接的四元组为(11.1.2.3, 8080, 22.4.5.6, 5555)

那么,你主机的8080端口建立了两条连接;

通常来说,服务端是固定一个监听端口,比如8080,等待客户端的连接请求。在不考虑地址重用的情况下,及时server端有多个ip,但是本地监听的端口是独立的。所以对于tcp连接的4元组中,如果destination_ip和destination_port不变。那么只有source_ip和source_port是可变的,因此最大的tcp连接数应该为 客户端的ip数 乘以 客户端的端口数。在IPV4中,不考虑ip分类等因素,最大的ip数为 2的32次方 ;客户端最大的端口数为2的16次方,也就是65536. 也就是服务端单机最大的tcp连接数约为2的48次方。

当然,这只是一个理论值,以linux服务器为例,实际的连接数还取决于

1. 内存大小(因为每个TCP连接都要占用一定的内存)、

2. 文件句柄限制,每一个tcp连接都需要占一个文件描述符,一旦这个文件描述符使用完了,新来的连接会返回一个“Can’t open so many files”的异常。如果大家知道对于操作系统最大可以打开的文件数限制,就知道怎么去调整这个限制

a) 可以执行【ulimit -n】得到当前一个进程最大能打开1024个文件,所以你要采用此默认配置最多也就可以并发上千个TCP连接。

b) 可以通过【vim /etc/security/limits.conf】去修改系统最大文件打开数的限制 c) 可以通过【cat /proc/sys/fs/file-max】查看linux系统级最大打开文件数限制,表示当前这个服务器最多能同时打开多少个文件


soft nofile 2048

* hard nofile 2048


表示修改所有用户限制、soft/hard表示软限制还是硬限制,2048表示修改以后的值

当然,这块还有其他很多的优化的点

3. 带宽资源的限制

总结

基于http请求通信到tcp,再到tcp通信的原理以及IO阻塞这块了解了通信的一些基本知识,如果对于这块有感兴趣的同学,可以去找再去找一些资料研究研究,实际上我们只需要掌握到我讲解的程度就行。

一台机器理论能支持的连接数相关推荐

  1. 一台服务器最大能支持多少条TCP连接

    一.一台服务器最大能打开的文件数 1.限制参数 我们知道在Linux中一切皆文件,那么一台服务器最大能打开多少个文件呢?Linux上能打开的最大文件数量受三个参数影响,分别是: fs.file-max ...

  2. 面试官:一台服务器最大能支持多少条 TCP 连接?问倒一大片。。。

    点关注公众号,回复"1024"获取2TB学习资源! 之前有一位读者向民工哥诉苦,有次面试,好不容易(今年行情大家都懂的)熬到到技术终面,谁知道面试官突然放个大招问他:一台服务器最大 ...

  3. 一台服务器最大能支持多少条 TCP 连接?问倒一大片。。。

    一台服务器最大能打开的文件数 限制参数 我们知道在Linux中一切皆文件,那么一台服务器最大能打开多少个文件呢?Linux上能打开的最大文件数量受三个参数影响,分别是: fs.file-max (系统 ...

  4. 面试官:一台服务器最大能支持多少条 TCP 连接?问倒一大片。

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 10 分钟. 来自:juejin.cn/post/7162824884597293086 一台服务器最大能打开的文件数 调整服 ...

  5. 一台服务器最大能支持多少条 TCP 连接?面试官的话问倒一大片。。。

    一台服务器最大能打开的文件数 调整服务器能打开的最大文件数示例 一台服务器最大能支持多少连接 一台客户端机器最多能发起多少条连接 其他 相关实际问题 之前有一位读者向作者诉苦,有次面试,好不容易(今年 ...

  6. redis-4.0.10集群安装(3台机器,6个node),以及在Spring项目中的集成,redis操作工具类

    1 Redis安装 redis高可用的三种常见的集群方式:redis sentinel .redis cluster(多主机+分布式).redis sharding.接下来主要介绍redis sent ...

  7. 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少

    曾几何时我们还在寻求网络编程中C10K问题的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了. 我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用 ...

  8. idhttpserver是按线程接受请求的吗_1000个并发线程,10台机器,每台机器4核,设计线程池大小...

    一道面试题 兄弟们,怎么说? 我觉得如果你工作了两年左右的时间,或者是突击准备了面试,这题回答个八成上来,应该是手到擒来的事情.这题中规中矩,考点清晰,可以说的东西不是很多. 但是这都上血书了,那不得 ...

  9. 50台机器无盘服务器,以50台机器小吧为例看深度无盘快速布署的那些事.doc

    以50台机器小吧为例看深度无盘快速布署的那些事 以50台机器小网吧为例看深度无盘快速布署的那些事 干网管这行好几年了,接手的网吧也有不少,这些年头也一直在研究无盘,自认还是有一些了解.测试和安装了这么 ...

最新文章

  1. 独家 | 快速掌握spacy在python中进行自然语言处理(附代码链接)
  2. VS 2010测试解读2-给测试用例做标签
  3. 小白学python买什么书-0基础小白学python有没有什么书可以推荐的?
  4. Linux信号 一 信号可靠性与分类
  5. 黑龙江认识电子计算机ppt,《第22课 不断发展的现代社会》优秀教案(黑龙江县级优课).docx...
  6. xlrd、xlwt操作execl表格
  7. ActiveMQ_基础学习
  8. Directx11教程(55) 建立球形和锥形物体
  9. easyui crud java_Easyui 创建 CRUD 应用_EasyUI 插件
  10. 八、高级依赖关系配置
  11. 狂欢 724,致敬运维侠
  12. MySQL数据库查询语句汇总
  13. 香港城市大学全球首创3D打印微型机器人技术 有望作治疗癌症用途
  14. java程序怎么写_java程序怎么写
  15. Java对象转xml
  16. 华清远见百度网盘实训笔记
  17. matlab 多项式拟合EXCEL中复杂数据
  18. 论文笔记:Pay More Attention to History: A Context Modeling Strategy for Conversational Text-to-SQL
  19. 说说我自己对于 基金 股票 的理解
  20. 硬盘存储FC光纤连接服务器显示脱机解决方法

热门文章

  1. 论文总结(negFIN: An efficient algorithm for fast mining frequent itemsets)
  2. 20189320《网络攻防》第一周作业
  3. OpenID 和 OAuth 的区别及第三方登录的安全隐患分析
  4. Codeforces Round #131 (Div. 2)------AB
  5. 数字图像处理之点运算
  6. MySQL下使用Inplace和Online方式创建索引的教程
  7. Pandas 基础(9) - 组合方法 merge
  8. python中的property
  9. J-1 Java概述
  10. 这些年遇到的坑爹问题汇总