Spark 作业服务器:"The server was not able to produce a timely response to your request"
Spark Job Server: "The server was not able to produce a timely response to your request"
我正在使用 Spark 作业服务器 运行 Spark 作业,它运行良好。但是当我尝试执行一项大工作(需要超过 40 秒)时,我收到此错误:
The server was not able to produce a timely response to your request.
是否需要一些配置才能等待服务器响应?我应该怎么办?
谢谢
在您的 Rest 调用中,将 (sync=false) 放在 URL 的末尾。类似于 http://server:8090/jobs?classPath=..... &sync=false 最后。它将在服务器上启动作业并为您提供一个 JobId。
然后可以使用 JobId 获取结果:
例如:
http://server:8090/jobs/b3b46a27-f711-469w-be09-4942006896b5
如果该作业未完成,它会将状态指示为 运行。如果完成,它将为您提供 FINISHED 状态和结果。
sync 作业提交可以达到几种不同的超时。你的来自 Spray-can 服务器。您可以通过 conf
文件对其进行配置:
spray.can.server {
idle-timeout = <set desired timeout>
request-timeout = <set desired timeout>
}
您可以将两个值都设置为 infinite
以完全禁用这些超时。
一般来说,我观察到至少有 3 种常见的不同超时,它们可以 return 您在作业完成之前提出的请求:
- 基于 Akka 的请求超时。如果同步作业在 X 秒之前未完成,将 return 具有 "ERROR" 状态的 JSON 响应。 SJS 中的默认值为 10 秒,但您可以通过将
timeout=Y
参数传递给您的 POST /jobs
请求来覆盖它。
- 喷雾罐服务器超时:
idle-timeout
、request-timeout
。将 return 默认 Spray 响应,使其更难捕捉。它们分别默认为 60 秒和 40 秒。
- 另一个超时可能来自您的客户端 REST 库...其中一些将其默认配置配置为禁用该层上的任何超时,其中一些可能会考虑服务器的超时并根据该配置自己的行为...例如,一旦您禁用上面的超时#2,C++ REST SDK 库就会启动 WinHTTP 超时 30 秒,如果#2 到位,它将等待 40 秒...
我遇到了同样的问题。错误消息似乎是通用的。当我查看日志时,我看到:
Oops, there's an AbstractMethodError... maybe you compiled your code with an older version of SJS? here's the exception:
当我将版本更改为 0.7 时,它起作用了。所以这个错误有时可能意味着 error.You 必须检查日志。
我正在使用 Spark 作业服务器 运行 Spark 作业,它运行良好。但是当我尝试执行一项大工作(需要超过 40 秒)时,我收到此错误:
The server was not able to produce a timely response to your request.
是否需要一些配置才能等待服务器响应?我应该怎么办?
谢谢
在您的 Rest 调用中,将 (sync=false) 放在 URL 的末尾。类似于 http://server:8090/jobs?classPath=..... &sync=false 最后。它将在服务器上启动作业并为您提供一个 JobId。
然后可以使用 JobId 获取结果:
例如: http://server:8090/jobs/b3b46a27-f711-469w-be09-4942006896b5
如果该作业未完成,它会将状态指示为 运行。如果完成,它将为您提供 FINISHED 状态和结果。
sync 作业提交可以达到几种不同的超时。你的来自 Spray-can 服务器。您可以通过 conf
文件对其进行配置:
spray.can.server {
idle-timeout = <set desired timeout>
request-timeout = <set desired timeout>
}
您可以将两个值都设置为 infinite
以完全禁用这些超时。
一般来说,我观察到至少有 3 种常见的不同超时,它们可以 return 您在作业完成之前提出的请求:
- 基于 Akka 的请求超时。如果同步作业在 X 秒之前未完成,将 return 具有 "ERROR" 状态的 JSON 响应。 SJS 中的默认值为 10 秒,但您可以通过将
timeout=Y
参数传递给您的POST /jobs
请求来覆盖它。 - 喷雾罐服务器超时:
idle-timeout
、request-timeout
。将 return 默认 Spray 响应,使其更难捕捉。它们分别默认为 60 秒和 40 秒。 - 另一个超时可能来自您的客户端 REST 库...其中一些将其默认配置配置为禁用该层上的任何超时,其中一些可能会考虑服务器的超时并根据该配置自己的行为...例如,一旦您禁用上面的超时#2,C++ REST SDK 库就会启动 WinHTTP 超时 30 秒,如果#2 到位,它将等待 40 秒...
我遇到了同样的问题。错误消息似乎是通用的。当我查看日志时,我看到:
Oops, there's an AbstractMethodError... maybe you compiled your code with an older version of SJS? here's the exception:
当我将版本更改为 0.7 时,它起作用了。所以这个错误有时可能意味着 error.You 必须检查日志。