Freebsd中的Apache2并发请求导致连接重置

Apache2 in Freebsd Concurrent request cause Connection reset

我目前正在尝试将我的 Web 服务器(php 基于 zendframework)从 Ubuntu 迁移到 FreeBSD。两台服务器具有相同的硬件配置。迁移后,我做了服务器的JMeter测试(Http请求(Json),Concurrent = 200),FreeBSD服务器中的"Throughput"是Ubuntu服务器的两倍,这很神奇。

但是,当我将并发增加到 500 时,我看到几乎 50% 的请求 失败 由于“java.net.SocketException:连接重置”。但它在 Ubuntu 服务器中正常工作。

经过多次测试,我发现Ubuntu可以无误地处理1500个并发的httprequest,FreeBSD服务器可以无误地处理200个并发请求,双倍速度,但不能处理更多。为了验证结果,我尝试了AB命令。 **ab -c 200 -n 5000 127.0.0.1/responseController。如果 ¬-c 参数超过 200,它会失败并终止,但在 Ubuntu.

中工作正常

为了进行调试,我做了以下操作: 1. 不知何故调整了httpd.conf, /boot/loader.conf, /etc/sysctl.conf,但是好像什么都没变。 2. 我尝试在 Apache 配置中切换到 mpn_worker_module 及其在 php 中的相关配置。没有任何变化,但失败部分日志不同,显示 "request failure to respond" 而不是 "java.net.SocketException: Connection reset"

我做了很多搜索,但找不到失败的原因。我虽然 Json 请求会一直等到响应或超时? 我不确定哪个配置文件或参数可以使它工作。

请帮忙。

感谢 Michael Zhilin,是的 "ipfw" 造成了这种情况,是的 "kern.ipc.soacceptqueue" 是这种情况下的瓶颈。