使用 Apache 高效设置前端应用服务器

使用 Apache 高效设置前端应用服务器

我必须使用 Apache 2.4 来前置各种应用服务器(一开始是 JBoss 6、Tomcat 8 独立版和嵌入到 spring boot 1.2 应用程序中的 Tomcat 8)。因此,我决定使用 mod_proxy(而不是 jk、ajp 或类似的东西)。据我所知,我设置了 Apache 和应用服务器以重用/池化连接。但是当我计算开放端口的数量时,我看到了数千个:

$ netstat | grep :80 | wc -l
4630

(我在 Windows 上,上面的命令是在 Cygwin 中运行的,所以不要混淆。Apache 等以本机方式运行,这意味着没有 cygwin 仿真层)我本来预计可能有 1000 个端口,但不会更多。

这是我的 Apache 反向代理配置:

<VirtualHost *:80>
    ServerAdmin ...
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/ connectiontimeout=5 timeout=30
    ProxyPassReverse / http://localhost:8080/ 
    ServerName ...
    ErrorLog "logs/foo.log"
    CustomLog "logs/foo-access.log" common
</VirtualHost>

MPM 处于活动状态,我可以使用最多 150 个传入连接,至少这是我从查看服务器状态时判断的...

...
1 requests currently being processed, 149 idle workers
...

..和 Apache 配置:

<IfModule mpm_winnt_module>
    ThreadsPerChild        150
    MaxConnectionsPerChild   0
</IfModule>

此配置导致 Spring Boot 嵌入的 Tomcat 访问最多 500 个连接:

server.tomcat.access-log-pattern=%h %l %u %t %I "%r" %s %b %D
server.tomcat.access-log-enabled=true
server.tomcat.max-threads=500
server.tomcat.basedir=./tomcat

那么为什么有这么多端口?我在另一台电脑上使用 JMeter 运行了负载测试,当我手动计算时,我期望得到以下数字:jmeter->Apache:端口 80 上有 150 个连接 Apache->Tomcat:端口 8080 上有 150 个连接(不能超过 500)Tomcat<-Apache:端口 8080 上有 150 个连接(不能超过 500)

我的设置中是否存在错误,导致端口无法重新使用?

相关内容