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