我尽可能地等待,但最终不得不从莫哈韦升级。
我知道有些东西会不必要地损坏。当然,它做到了。
较大的文件(超过 100k)随机需要 5 秒才能加载。它并不总是相同的文件,也不是每次都相同,并且它只发生在 HTTP Apache 中(尝试过端口 80 和 8080)。它在 Apache HTTPS/443 和 HTTP/80 上的 Python SimpleHTTPServer 中运行良好。
我尝试过的事情:
brew reinstall httpd
重新安装了它。没什么。重现步骤:
i=1; while [ $i -lt 50 ]; do time curl http://127.0.0.1/large.jpg > /dev/null; ((i++)); done
最终会在 96% 时停顿 5 秒:
96 395k 96 382k
另一个文件:
i=1; while [ $i -lt 50 ]; do time curl http://127.0.0.1/jquery-latest.min.js > /dev/null; ((i++)); done
最终停在85%
85 95786 85 81390
httpd -v
服务器版本:Apache/2.4.52 (Unix)
服务器建成:2021年12月20日13:37:44
通过brew安装
macOS 蒙特利 12.1 (21C52)
我失去了理智,非常感谢任何帮助。
谢谢
我想我找到了解决方案。通过添加以下内容来关闭“保持活动”:
KeepAlive Off
到你的http.conf
更好的答案是理解为什么 Keep Alive 行为不当并修复它,但由于它在我的本地开发计算机上,所以这并不重要。
多亏了这个帖子,我已经能够在 apache 的 bugzilla 上提出问题,并且该错误已在 httpd 2.4.54 中修复并发布,该版本已经在brew上可用:)
哇-这(KeepAlive Off)在我的案例中取得了多大的进步(ubuntu20 apache2 -v 2.4.42)
# apache2 -v
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2023-03-08T17:32:54
我正在解决为什么随机 jpg 图像加载需要约 1 秒 - 4 秒的时间,而 90% 的图像加载时间不到 200 毫秒。服务器是企业级 ssd rd1,硬件很棒,负载很少超过 0.10,(尝试调整很多 apache 选项)所以它没有意义 - 将 keep active 从默认的 on 设置为 off 立即解决了这个问题!
作为一个额外的数据点,下面是 apache 记分板的 Grafana 图(/mod_status 的服务器状态) - 你可以看到蓝线是我设置 KeepAlive Off (并重新启动 apache)的地方 - 等待时间似乎有所增加连接数,当然还有 KeepAlive 连接数的下降):