2017-01-06 14 views
0

Мы использовали TensorFlow для загрузки модели и реализации Java gRPC-клиента.Сервер TensorFlow закрывает соединение в течение таймаута клиента

Нормальный он работает для небольших данных. Но если мы запрашиваем с большим размером партии, а данные почти 1 ~ 2M, сервер закрывает соединение и быстро выводит внутреннюю ошибку.

У нас также есть проблема с отслеживанием этого вопроса в https://github.com/tensorflow/serving/issues/284.

Job aborted due to stage failure: Task 47 in stage 7.0 failed 4 times, most recent failure: Lost task 47.3 in stage 7.0 (TID 5349, xxx) 
io.grpc.StatusRuntimeException: INTERNAL: HTTP/2 error code: INTERNAL_ERROR 
Received Rst Stream 
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:230) 
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:211) 
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:144) 
at tensorflow.serving.PredictionServiceGrpc$PredictionServiceBlockingStub.predict(PredictionServiceGrpc.java:160) 

...... 

at scala.collection.Iterator$$anon$13.hasNext(Iterator.scala:371) 
at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:189) 
at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:64) 
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:73) 
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41) 
at org.apache.spark.scheduler.Task.run(Task.scala:91) 
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:219) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

Driver stacktrace: 

ответ

1

Как можно видеть в above issue, это было вызвано сообщением, превышающей максимальный размер сообщений по умолчанию 4 Мбайт. Приемник больших сообщений должен явно разрешать большие размеры, или отправитель посылает более мелкие сообщения.

gRPC в порядке с большими сообщениями (даже 100 МБ), но приложений часто нет. Максимальный размер сообщения имеет место, чтобы разрешать «большие» сообщения только в приложениях, которые готовы принять их.

+0

Мы должны поднять ограничение на стороне клиента для увеличения размера сообщения. – tobe