对于30MB数据,Tomcat request.getParameter(“_ xmldata”)需要25秒

时间:2012-01-19 03:15:25

标签: java tomcat getparameter

我的客户需要发布30MB的xml数据。数据采用二进制形式,并且经过高度加密。客户端命中我在tomcat上运行的servlet,然后通过我获取数据 Servlet request.getParameter("_xmldata");

问题是,将30MB数据移动到String变量只需 25秒。 所以在我看来,有两个问题:

1)为什么会这样?

2)无论如何,我能改进吗? (除了让用户通过FTP / SSH发送)

服务器环境: -

  • CPU:Quad Core Xeon 5540
  • 服务器内存:4GB
  • Tomcat Heap:2GB
  • 硬盘:500GB

1 个答案:

答案 0 :(得分:1)

我打算猜测getParameter方法仍然在等待接收请求中的必要数据。您可以通过使用Wireshark等监控服务器来确认这一点。

已收到所有必需的HTTP请求标头,这足以让服务器开始处理请求。但是一旦你拨打getParameter,它可能仍在等待收到整个“字段”。检查客户端和服务器之间的带宽。我非常怀疑这是一个CPU问题(你不需要四核)。

您可以通过在请求中的_xmldata字段之前和之后放置小的测试文本字段来确认这一点。只读_xmldata周围的这些字段。我猜测试读最后一次也会遇到你所观察到的同样的延迟。

(我还要小心你如何通过请求参数接收二进制数据 - 此外,将它移动到一个String变量。我希望它用Base64编码的方式编码......)< / p>