我正在尝试弄清楚如何配置 nginx 和 tomcat 以使其正确协同工作。
Nginx 有一个worker connections
设置,tomcat 也有max threads
(假设 tomcat 有原生 apr 连接器)。由于 nginx 使用 HTTP/1.0 连接到后端,因此 tomcat 不需要 keepalive。
我keep-alive timeout
在 nginx 中设置为 30s。如果目标是 100 req/s,并且每个请求在 1 秒内完成,则可以有 100 个请求 * 每个请求 30 秒 = 3000 个并发连接可以打开到 nginx,并且将有 100 个并发连接到 tomcat。
因此,如果我worker connections
在 nginx 中将其设置为 6000(工作进程为 1,我认为 nginx 每个请求消耗 2 个连接。一个用于客户端,一个用于后端),并max threads
在 tomcat 中将其设置为 100(默认情况下已经是 200),这将起作用。
这个计算是否存在概念上的问题?确切的数字并不重要。
谢谢。
答案1
在进行上述计算时,您应该考虑两点:
- 连接和线程之间是有区别的。这页稍微分解一下,但每个请求都是一个线程。每个连接会有很多请求。
- RAM 是另一个监控因素。每个线程占用多少内存以及您的机器上有多少内存可能是限制因素。
除此之外,它看上去还不错。
答案2
将请求从 nginx 转发到 tomcat 时请记住:
您需要设置协议 http/1.1 并将连接设置为“”以启用连接持久性
问候 vj