复制10 GB文件时的WebSphere HTTP 500

时间:2012-12-17 16:06:34

标签: file copy websphere

配置: 我们有iPlanet Web服务器,它位于Linux机器中部署的WebSphere Portal 6.1集群(2)之前。

当用户尝试跨文件系统(安装了NFS)复制10 GB文件时,我们使用java运行时将文件复制到另一个NFS挂载,希望它比使用任何其他Java库更快。

proc = rt.exec("cp " + fileName + " " + outFileName);

部署的应用程序是一个JSF portlet应用程序 a)应用服务器和应用程序的会话超时为60分钟 b)我们从客户端页面调用Ajax以保持会话活动

用户在3分钟内收到HTTP 500,而我们的日志显示该文件仍在复制。不确定为什么WebSphere正在发送HTTP 500?

10分钟后,文件被复制,当他点击刷新时,他可以继续。

不确定导致此HTTP 500的原因。

2 个答案:

答案 0 :(得分:1)

WebContainer线程不应该用于长任务。 他在3分钟后获得500分,因为这是WebSphere决定线程挂起的时间。

您应该做的是使用WorkManager执行该长任务,客户端可以轮询以检查任务的状态。

如果您考虑在不久的将来升级到WAS v8 / v8.5,那么最好使用Asynchronous Servlets

答案 1 :(得分:1)

由于某些原因,您的客户端在几分钟后收到HTTP 500错误的原因可能会发生。如果没有堆栈跟踪和一些相关的日志记录,就不可能知道WebSphere中的哪个组件在3分钟后“醒来”并停止了所有操作。它可能是Web容器线程池的WebSphere超时设置,也可能是其他一些超时 - 应该可以从日志中轻松得出结论。

要解决此问题,您可以执行以下操作之一:

  • 调整相关的超时值(同样取决于 超时确切)。
  • 更改您的设计,以便在后台执行长时间运行的任务。您可以使用WebSphere的Work Manager API或异步bean / servlet。