当前位置: 首页 > 知识库问答 >
问题:

Tomcat下载Servlet背后的Apache结果在http pd高CPU

齐献
2023-03-14

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

我的客户端通过端口443(html" target="_blank">https)连接到Apache上的超文本标记语言静态内容。

然后,他们使用AJP连接器(协议: AJP/1.3)使用代理传递规则调用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,因为下载访问是安全的,必须进行权限检查。

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

如果客户端直接从tomcat下载,绕过Apache,这一切都很好。

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

这让我觉得问题来自ProxyPass规则。

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

如果没有,我应该使用什么替代方案?

谢谢你的帮助。

共有1个答案

常朗
2023-03-14

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

它与tomcat或AJP无关,因为一个简单的文件副本让我的中央处理器在我的CentOS盒子上变得很高,但只适用于大文件(超过2Go)。

希望它能帮助别人!

 类似资料:
  • 我一直四处寻找,但无法为以下情况找到明确的解决方案: 我们有一个web应用程序(Grails+Spring Security),它在Apache后面的tomcat中运行。应用程序的一部分需要在https上运行,因此使用Spring Security Channel Security,只要您导航到应用程序的一部分是安全的,Spring就会将您重定向到https,状态代码为302。 现在问题出现在将a

  • 我一直试图用一个使用嵌入式Tomcat的Spring Boot应用程序来配置Apache web server。在Spring Boot之前,我曾创建一个ajp.conf文件,如下所示: 不知道这是怎么回事。我在网上搜索了很多,但没有找到关于如何在apache背后使用spring boot应用程序为tomcat提供服务的好文档。最后,我还希望对多个tomcat实例进行负载平衡。

  • Java脚本代码段 在Servlet 这很好用!但是我想相应地改变div(反馈)的背景色,这意味着如果条件为真,背景色应该是绿色,否则背景色应该是红色(否则)

  • 我需要发布一个JSON Camel Servlet,然后复制消息并拆分列表。处理每个拆分的消息,最后聚合并返回servlet响应。 然而,只要在路由中引入拆分器,我就会看到输入流正在关闭,Servlet无法写回响应。 请注意,流缓存也已启用。 例外: 如果我删除拆分器和聚合器,我会看到Servlet响应回来。 非常感谢您提供的所有帮助!。

  • 本文向大家介绍jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】,包括了jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现点击后高亮背景固定显示的菜单效果。分享给大家供大家参考,具体如下: 运行效果图如下: 完整实例代码点击此处本站下载。 更多关于jQuery相关内容感兴趣的读者可查看本