不要轻易的口出狂言,那样只会透露出你的软弱。 | BLEACH

   

统计
  • 建站日期:2016-12-04
  • 文章总数:255 篇
  • 评论总数:174 条
  • 分类总数:9 个
  • 最后更新:9月20日
文章 网络转载

实现单机百万并发

橙子柠檬
首页 网络转载 正文

本篇文章是根据某一个公开课进行整理的,如何在服务端和客户端去实现单机百万的并发。

从客户端角度看,单机如果能发出百万并发,那我可以做出一个能发出百万并发的压测工具。从服务端角度看,可以优化现有的服务器支持更多的并发。

服务端支撑百万并发

  • 文件句柄设置

    设置fd > 100w

  • 预估内存

    每个连接占用内存3KB ~ 10KB,100W连接占用内存:100W * 10KB = 10GB

  • 机器配置说明
    普通X86物理机:40Cores / 192GB Memory / 10KB Network / 1TB SAS

  • Nginx版本推荐
    Nginx-1.14.2

Client端发出超过65535的连接数

  • 绑定多张网卡
    65535 * Count(网卡数)

  • 多张网卡接入VIP
    提供APP接入VIP

单机服务端最大TCP连接数

  • 实际受到机器资源(内存)、操作系统设置等限制

  • Linux下影响TCP连接的主要因素是内存和机器允许的文件描述符个数每个tcp连接都要占用一定内存,每个socket就是一个文件描述符fd,1024以下端口为保留端口,每个socket占用在3KB-10KB,文件句柄修改 /etc/security/limits.conf

单机Client端最大TCP连接数

  • client每次发起tcp连接请求,选择一个空闲的本地端口,该端口是d独占的,不能共享

  • tcp port的数据类型是unsigned short,所以单机最大TCP连接数为65535=2的16次方-1(port=0保留)

  • 怎么突破最大连接数为65535个
    一块网卡对应一个IP地址
    一个IP地址对应65535个端口
    一个端口只能一个socket监听
    一个socket(ip、port)可以接受多个socket连接

  • 单机客户端最大连接数为 65535 * count(单机网卡数)

什么是socket

  • Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。

  • 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面

  • Socket的出现只是可以更方便的使用TCP/IP协议栈而已,其对TCP/IP进行了抽象形成了几个最基本的函数接口
    -create,listen,accept,connect,read和write等等

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
这篇文章最后更新于2019-3-28,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
6-Ingress 与 Ingress Controller
« 上一篇
5-kubernetes组件Service入门
下一篇 »

发表评论

HI ! 请登录
注册会员,享受下载全站资源特权。
社交账号登录

一些标签

热门文章

1
2
kcptun加速SS实战-亲测100%加速成功
3
七个经典的聚会游戏惩罚措施
4
php.ini 配置文件 中文注释 详解

倒计时