gpt4 book ai didi

apache - Apache 后面的 Tomcat 下载 Servlet 导致 httpd 高 CPU

转载 作者:行者123 更新时间:2023-11-28 23:16:07 25 4
gpt4 key购买 nike

我有一台安装了 Apache(版本 2.4.6)和 Tomcat(版本 8.0.28)的 Linux 服务器 (CentOS 7.4.1708)。

我的客户端使用端口 443 (https) 连接到 Apache 上的 HTML 静态内容。

然后他们使用 AJP 连接器(协议(protocol):AJP/1.3)通过 proxypass 规则将 WebRequest 调用到 tomcat。

ProxyPass /MyJavaWebApp/ ajp://localhost:8009/MyJavaWebApp/

一切都按预期工作,但当客户端通过 MyJavaWebApp 中的下载 servlet 下载文件时,我遇到了性能问题。

// the core code of the servlet is the following
// I use org.apache.commons.io.IOUtils to copy the streams
IOUtils.copy(new FileInputStream(file), response.getOutputStream());

我需要使用 servlet,因为下载访问是安全的并且必须进行权限检查。

当他们下载一个文件时,我可以看到一个 httpd 进程使用了​​我 linux 服务器上几乎 100% 的一个内核。然后,如果下载请求使用了所有内核,服务器显然会变得非常慢。

如果客户端绕过 Apache 直接从 tomcat 下载就没问题。

http://example.com:8080/MyJavaWebApp/DownloadAsset

这让我认为问题出在 ProxyPass 规则上。

有没有办法优化下载 servlet 的 ProxyPass 规则?

如果不是,我应该使用什么替代品?

谢谢你的帮助。

最佳答案

几周前我终于找到了 High Cpu 的原因。

它与 tomcat 或 AJP 无关,因为简单的文件复制会使我的 CentOS 机器上的 CPU 变高,但仅适用于大文件(高于 2Go)。

希望对大家有所帮助!

关于apache - Apache 后面的 Tomcat 下载 Servlet 导致 httpd 高 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49153821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com