我正在开发一个 Web 应用程序,它允许用户在服务器上远程运行 AI 算法,以减少解决方案的等待时间。这是一个大纲。
Browser -> jQuery AJAX -> Apache2 proxy -> tomcat7 -> RESTful java -> Runtime.getRuntime().exec() -> command-line C algorithm
restful 服务通过 AJAX 响应返回所需的信息,并在浏览器上进行一些处理。
这适用于我测试过的大多数算法。然而,一些算法会在运行很长时间后超时。我实现了实时状态更新,因此算法仍在运行并在浏览器上不断生成输出,但大约 5 分钟后,我收到 500 Internal Server Error。
从命令行终止算法进程也会导致 500 Internal Server Error。
直接从命令行运行算法会导致正确执行。
将 AJAX 调用发送到休眠一小时的 restful 方法会导致 503(服务暂时不可用)错误。
还有什么可能是造成这种情况的原因?我一直在进行故障排除一分钟,现在完全没有想法。
谢谢你的帮助!
- 编辑 -
我开发了一种有效解决问题的解决方法,但是,我仍然有兴趣知道其他人的想法。消除长时间的 AJAX 调用并用重复调用替换它以通过备用状态文件检查算法的状态适用于长时间运行的进程。
但是,为什么以前我会遇到指定永远不会超时的 AJAX 调用的问题..?