请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

限流RateLimiter和Tomcat中最大连接数和最大线程数的区别

老师,通过限流来控制并发时,代码里使用了RateLimiter类。而Tomcat本身也是可以限制最大连接数和最大线程数的,这两种方式有什么区别么?

正在回答 回答被采纳积分+3

1回答

Jimin 2018-05-30 16:59:18
你好,RateLimiter 类和Tomcat本身设置的最大连接数不一样。通常RateLimiter类是请求或调度已经进入到服务器了,而针对某个资源的进行一定限流操作,否则可能会导致某个资源使用出现问题。比如tomcat层遭遇DDOS攻击,来了大量的请求,而每个请求都涉及到发短信,为了保证发短信服务正常,在调用发短信服务之前其实就可以考虑引入RateLimiter做些流量的控制。
0 回复 有任何疑惑可以回复我~
  • 提问者 蝙蝠之殇 #1
    我可不可以这样理解,tomcat的最大连接数和最大线程数是在整体上进行控制,设置一个上限,内部应用的线程数目不能超过这个上限。基于这个上限的前提下,RateLimiter再对具体的接口或资源操作进行细粒度的控制,是这样子么?
    回复 有任何疑惑可以回复我~ 2018-05-30 18:12:44
  • Jimin 回复 提问者 蝙蝠之殇 #2
    这个不完全是。tomcat那里控制的外面请求进入服务器的一个并发限制,当请求被服务器处理时,当前线程还可以额外启动更多的线程,拿课程里演示的一些例子,基本都是在main这个主线程去启动新的线程来做些处理,这个时候也是可以引入ratelimiter来做一些限制的。
    回复 有任何疑惑可以回复我~ 2018-05-30 21:54:57
  • 提问者 蝙蝠之殇 回复 Jimin #3
    我还是不是很理解。我做过测试,将tomcat的maxThreads设置为3,maxConnections设置为10,acceptCount设置为2。使用jmeter对TestController的test方法做压测,并发数为50,表现的情况是,每秒钟test方法执行了3次,只启动了3个线程。而没有对tomcat进行限制的时候,是可以每秒钟执行50次的
    回复 有任何疑惑可以回复我~ 2018-05-30 22:04:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信