java吧 关注:1,289,363贴子:12,819,211

请问一下关于Tomcat并发处理请求的问题

只看楼主收藏回复

今天看资源预估的网课, 老师说
假如处理一个请求需要100ms, 一个tomcat设置500个线程, 所以一个线程一秒钟可以处理10个请求,
也就是 一个Tomcat一秒钟可以处理 10*500 = 5000个请求
我的疑问是 假如服务器cpu 是12核24线程数, 为啥 Tomcat 500个线程能同时运行, 不是最多只能24线程处理请求, 而且没有算上cpu核心切换线程的时间, 所以我搞不懂哪些上千万并发是怎么弄的, 我理解的电脑核心和线程数差太远了
搞不懂CPU核心线程和 Tomcat等线程并发处理的关系,
请教大佬指点一下


IP属地:四川1楼2023-09-14 17:50回复


    IP属地:四川2楼2023-09-14 18:11
    收起回复
      2025-11-28 10:34:19
      广告
      不感兴趣
      开通SVIP免广告
      因为你是对的,你们老师是错的


      IP属地:浙江来自Android客户端3楼2023-09-14 18:37
      收起回复
        线程会上下午切换,


        IP属地:陕西来自Android客户端4楼2023-09-14 18:54
        收起回复
          因为你是对的,你们老师误人子弟


          IP属地:浙江来自Android客户端5楼2023-09-14 18:55
          回复
            上下文切换,线程都是运行一个小的时间片就切换给另一个线程,然后等待下次分配给自己资源。严格说同时运行的就是24个线程,但是这个时间很短,感觉不到。


            IP属地:四川来自Android客户端6楼2023-09-14 18:59
            收起回复
              真的企业服务器请求资源是这么估计的吗, 大家都怎么说, 我觉得不可能吧, 按高配置一台电脑100个逻辑出来器, 100ms处理一个请求, 一秒钟一台电脑处理1000个请求
              单单1万个并发请求就要10台, 这还是单体应用, 总所周知现在是微服务时代, 按一个系统拆分10个微服务的话, 平均算下来 1万并发就要100台服务器, 淘宝京东那些并发上千万, 而且功能那么多, 服务器不得几十万去了


              IP属地:四川7楼2023-09-14 19:20
              收起回复
                若是io密集型请求,那么多数时间都花在io等待上,此时线程数多于逻辑核心数不会对性能有太大影响;若是计算密集型请求,那么多数时间都花在运算上,此时线程数多于逻辑核心数则会对性能有显著影响。io密集型的请求使用更为轻量的协程可以获得更好的并发性能。


                IP属地:广东来自Android客户端8楼2023-09-14 19:25
                回复
                  2025-11-28 10:28:19
                  广告
                  不感兴趣
                  开通SVIP免广告
                  不要怀疑,我们测试环境压测都上百台服务器起。一线互联网公司的一个机房都是几十万台。光电费都要过亿。而现在生产都是镜像环境,那更是比服务器还要多。在双11这样的流量高峰时,服务器弹性扩容后上百万节点都是正常的


                  IP属地:山西来自Android客户端9楼2023-09-14 19:39
                  回复
                    并发和并行,操作系统里有类似的概念。


                    IP属地:广东来自Android客户端10楼2023-09-14 19:45
                    回复
                      你可以去nacos官网看看官方的压测数据,三个节点的nacos就可以支持百万服务节点实例的上下线了。如果没有这样的场景是没有必要做这样的测试的


                      IP属地:山西来自Android客户端11楼2023-09-14 19:47
                      回复
                        预估的没有错,但是有一个点得推敲下。每个请求的耗时100ms都是cpu在处理吗?


                        来自Android客户端12楼2023-09-14 21:33
                        收起回复
                          我们网关的服务器大概是30多台4核8g的


                          IP属地:北京来自iPhone客户端13楼2023-09-14 22:39
                          回复
                            并发数和并行数是不一样的,cpu分时处理,线程之间切换时间极短,基本无感知,所以可以认为两个线程同时运行。但是硬件确实只有那么多个核。你老师说的是并发,而你理解的是并行,其实都没错。


                            IP属地:浙江来自Android客户端14楼2023-09-14 23:13
                            收起回复
                              2025-11-28 10:22:19
                              广告
                              不感兴趣
                              开通SVIP免广告
                              个人理解,,因为你是设置并发数,并发是存在线程上下文切换的,假如你电脑是单核,你设置500线程,那么这个核心在五百里头不停切换,,实力上还是一个核心在跑,并不是五百个线程同时跑,是切换着跑,所以你设置再大也没用,取决于你电脑有多少核,和你处理任务的速度,如果你1毫秒一个任务你设置五百线程,不算线程切换实力也要五百毫秒,单核的情况下


                              IP属地:福建来自iPhone客户端15楼2023-09-14 23:15
                              回复