我的客户需要发布30MB的xml数据。数据采用二进制形式,并且经过高度加密。客户端命中我在tomcat上运行的servlet,然后通过我获取数据
Servlet request.getParameter("_xmldata");
问题是,将30MB数据移动到String变量只需 25秒。 所以在我看来,有两个问题:
1)为什么会这样?
2)无论如何,我能改进吗? (除了让用户通过FTP / SSH发送)
服务器环境: -
答案 0 :(得分:1)
我打算猜测getParameter
方法仍然在等待接收请求中的必要数据。您可以通过使用Wireshark等监控服务器来确认这一点。
已收到所有必需的HTTP请求标头,这足以让服务器开始处理请求。但是一旦你拨打getParameter
,它可能仍在等待收到整个“字段”。检查客户端和服务器之间的带宽。我非常怀疑这是一个CPU问题(你不需要四核)。
您可以通过在请求中的_xmldata
字段之前和之后放置小的测试文本字段来确认这一点。只读_xmldata
周围的这些字段。我猜测试读最后一次也会遇到你所观察到的同样的延迟。
(我还要小心你如何通过请求参数接收二进制数据 - 此外,将它移动到一个String变量。我希望它用Base64编码的方式编码......)< / p>