2015-01-16 2 views
3

Я использую Spark Job Server для запуска работы Spark, и он отлично работает. Но когда я пытаюсь выполнить большую работу (требуется более 40 секунд), я получаю эту ошибку:Spark Job Server: «Сервер не смог своевременно ответить на ваш запрос»

The server was not able to produce a timely response to your request. 

Есть ли какая конфигурация необходима для того, чтобы ждать ответа сервера? Что мне делать?

Спасибо

+0

Это не вопрос с искровой java, этот тег следует удалить. – CodeMonkeyKing

ответ

6

Существует несколько различных тайм-аутов, которые вы можете получить с помощью sync вакансии. Твой идет от сервера Spray-can. Вы можете настроить его через файл conf:

spray.can.server { 
     idle-timeout = <set desired timeout> 
     request-timeout = <set desired timeout> 
} 

Вы можете установить оба значения в infinite отключить эти таймауты на всех.

В общем, есть по крайней мере 3 общие разные интервалы времени, которые я наблюдал, и что может вернуть запрос до завершения работы:

  1. -основы Akka задать тайм-аут. Вернет ответ JSON с статусом «ОШИБКА», если работа синхронизации не была завершена до X секунд. Значение по умолчанию в SJS равно 10 с, но вы можете перезаписать его, передав аргумент timeout=Y на ваш запрос POST /jobs.
  2. Тайм-аут сервера-распылителя: idle-timeout, request-timeout. Будет возвращен ответ Spray по умолчанию, что усложнит задачу. По умолчанию они равны 60 и 40 секундам соответственно.
  3. Еще один тайм-аут может быть получен из библиотеки REST вашего клиента ... Некоторые из них настраивают свои значения по умолчанию для отключения любого тайм-аута на этом уровне, некоторые из них могут принимать во внимание таймауты сервера и настраивать их собственное поведение в соответствии с этим. . Например, C++ REST SDK библиотека пинки в WinHTTP таймаут 30 секунд один раз отключить тайм-аут # 2 выше, с № 2 в месте он будет ждать 40 сек ...
1

В вашем Rest вызова, место (синхронизация = ложь) в конце URL. Подобно http://server:8090/jobs?classPath= .... & sync = false в конце. Он запустит работу на сервере и предоставит вам JobId.

JobId может быть использован, чтобы получить результаты:

Например: http://server:8090/jobs/b3b46a27-f711-469w-be09-4942006896b5

Если эта работа не закончена, она будет указывать на статус RUNNING. Если он будет завершен, он предоставит вам статус FINISHED и результаты.

0

у меня была такая же проблема. Сообщение об ошибке кажется общим. Когда я проверяю журналы, я видел:

Oops, there's an AbstractMethodError... maybe you compiled your code with an older version of SJS? here's the exception: 

И когда я сменил версию на 0.7, она сработала. SO, вероятно, эта ошибка иногда означает, что есть ошибка. Вы должны проверить журналы.

 Смежные вопросы

  • Нет связанных вопросов^_^