• 百万并发设计


                  百万并发架构

    一 单个机器的并发

    1. Linux系统系统级的最大文件描述符

          1.1 系统级最大文件描述符

    理论上系统内存有多大就能打开多少的文件描述符,实际上内核会处理,一般最大打开文件数是系统内存的10%(以KB来计算),比如16G的内存,最大文件数大约是16*1000*1000*10%=1.6million, 可以通过 cat /proc/sys/fs/file-max 或者 sysctl -a | grep fs.file-max 命令查看

          1.2 更改系统级限制有临时更改和永久更改两种方式:

    临时更改:session断开或者系统重启后会恢复原来的设置值。使用命令 sysctl -w fs.file-max=xxxx,其中xxxx就是要设置的数字。

    永久更改:vim编辑 /etc/sysctl.conf 文件,在后面添加 fs.file-max=xxxx,其中xxxx就是要设置的数字。保存退出后还要使用sysctl -p 命令使其生效。

          2.Linux系统用户级的最大文件描述符

         2.1 用户级最大文件描述符

    同时为了控制每个进程消耗的文件资源,内核也会对单个进程最大打开文件数做默认限制,即用户级限制。32位系统默认值一般是102464位系统默认值一般是65535,可以使用 ulimit -n 命令查看。

          2.2 更改用户级限制也有临时更改和永久更改两种方式:

    临时更改:session断开或者系统重启后会恢复原来的设置值。使用命令 ulimit -SHn xxxx 命令来修改,其中xxxx就是要设置的数字。

    永久更改:vim编辑 /etc/security/limits.conf 文件,修改其中的 hard nofile xxxx  soft nofile xxxx,其中xxxx就是要设置的数字。保存后退出。关于hardsoft的区别,参照下面参考链接中的第5个。

         3. Nginx并发数

    nginx官方说nginx能支撑6万多并发性能最好,那么这里我们设置nginx进程最大能打开60,000fd,假如是4核的CPU(内存我们假设足够大32G64G等等),我们设置worker数量为4,那么worker_connection数量为15,000。那么nginx对外能提供多少并发数呢?你以为是60,000?那么你答错了,因为nginx作为反向代理,一个用户的请求实际上占了2fd,一个fd是用户请求,一个fd是连接后台服务的。所以一个nginx在我们这样配置参数下,可以支持30,000并发

         4. tomcat并发数

          4.1 acceptCount 最大连接数

    默认是100。当http请求数达到tomcat的最大线程数时,还有新的http请求到来,tomcat会把请求数放到队列中。acceptCount就是最大的等待数,超过这个,tomcat会拒绝。

          4.2 maxThreads最大线程数

    每一个HTTP请求,tomcat都会创建一个线程来处理请求,最大线程数决定了tomcat能同时处理多少个请求。默认是200

           4.3 maxConnections最大连接数

    同一时间能接受的最大连接数。

            4.4 最大并发

    响应时间在50ms,则每个线程1秒可以处理20个请求,tps20*maxThreads

            5 数据库

    数据库的最大连接数。SHOW GLOBAL STATUS LIKE '%max _connections%'

            6 Dubbo

    Dubbo的默认线程是200.

            7 Redis

    Redis的默认线程是10000.

            8 Jedis

    JedismaxActive8.修改为1000.

    综上所述,单个机器的默认并发200,通过配置,增加tomcatdubbo的线程数可以达到1000并发

    二 百万并发

    1. 2LVS集群(一主一备+keepalived
    2. nginx30000并发,40nginx服务器
    3. tomcat1000并发,1000tomcat服务器,实际上大部分场景不可能每秒都是1百万并发。比如10秒有100万个请求,实际上可以用kafka接受,然后分摊到每秒10万个请求,这样tomcat需要100台机器可以满足需求

  • 相关阅读:
    nodejs处理图片工具sharp
    ant Design Table表格渲染慢、卡死问题前端解决方法-虚拟表格
    1.Linux入门基本指令
    分支和循环语句
    geoserver跨域问题解决
    2024届数字IC设计秋招面经-鼎信
    了解IO,内外存,文件操作这一篇就够了
    代码随想录算法训练营二十四期第十七天|LeetCode110. 平衡二叉树、LeetCode257. 二叉树的所有路径、LeetCode404. 左叶子之和
    八股文第十九天
    国腾GM系列,GM8284DD(GM8284DR,LT8218A)、 GM8285C、GM7123C,LVDSTTL转TTL,TTL转成单路LVDS
  • 原文地址:https://blog.csdn.net/gamezouni/article/details/126301345