我有一个运行的 Tomcat 服务器连接到另一个 Tableau 服务器。我需要从 Tomcat 到 Tableau 进行大约 25 次 GET 调用。现在我正在尝试将其线程化并让每个线程创建自己的 HTTP 连接对象并进行调用。在我的本地系统(本地 Tomcat,远程 Tableau)上,我注意到在这种情况下我的每个线程平均需要大约 10 秒,所以总共需要 10 秒。
但是,如果我按顺序执行此操作,则每个请求需要 2 秒,因此总共需要 50 个。
我的疑问是,在并行发出请求时,为什么每个请求都需要超过 2 秒,而按顺序完成只需要 2 秒?
这与从一个客户端(浏览器)到同一域的最大并发连接数有什么关系吗?但这里的请求来 self 的 Tomcat 服务器,而不是浏览器。
如果是,默认规则是什么,有什么办法可以改变吗?
最佳答案
在我看来,它最有可能 Context Switching Overhead系统必须处理每个请求,这就是为什么您会看到单个请求的时间更长(与一个顺序线程相比),但整体处理却有显着提高。
当上下文切换开销与整体事件所花费的时间相比可以忽略不计时,进行并行处理是有意义的。
关于http - 两台服务器之间同一域的最大并发 http 连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971908/