Лучшие практики для внедрения сроков и повторений для GRPC [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Лучшие практики для внедрения сроков и повторений для GRPC [закрыто]

Сообщение Anonymous »

Я работаю над некоторым старым кодом GRPC и новичок в пространстве. У сервера возникают некоторые проблемы, отвечающие на запросы до крайнего срока (тайм -аут), и я пытаюсь отследить проблему.
Вот некоторые из журналов, которые у меня есть:
[CLIENT] Sending request for requestId:8760 at 18:34:08.923
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[SERVER] 18:34:08.924 Received requestId:8760
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Sending request for requestId:8760 at 18:34:11.941
[CLIENT] Deadline for requestId:8760 is 18:34:11.923
[CLIENT] Sending requestId:8760 for Method: Send
[CLIENT] requestId:8760 has failed due to RpcException Grpc.Core.RpcException: Status(StatusCode="DeadlineExceeded")

[CLIENT] Received response for requestId:8760 for ProcessResult in 3018 ms after 5 retries [Status(StatusCode="DeadlineExceeded")]
[CLIENT] Request FAILED for requestId:8760 for ProcessResult in 3018 ms after 5 retries. Failure: Status(StatusCode="DeadlineExceeded")

[SERVER] 18:34:13.075 Received request for requestId:8760
[SERVER] 18:34:13.075 Returning response (status: RanToCompletion) for requestId:8760
[SERVER] 18:34:13.075 Sent response for requestId:8760, process took 0 ms
< /code>
Как вы можете видеть, часть сервера предположительно получает запрос сразу же, но он отправляет ответ гораздо намного позже (хотя предположительно, это не заняло его времени). Тем не менее, мой вопрос больше связан с сроками и повторениями: запрос пробовал в общей сложности 5 раз, но даже вторая попытка происходит в ... 11,941 - уже после крайнего срока 11,923. < /P>
Глядя на код, мы устанавливаем крайний срок только один раз, а затем делаем повторения без изменения срока: < /p>
CallOptions options = new CallOptions(deadline: DateTime.UtcNow.AddMilliseconds(3000))
.WithWaitForReady(true).WithHeaders(new Metadata
{
{ "req_id", requestId },
});

int numOfRetry
while (numOfRetry < 5 && Channel.State != ChannelState.Shutdown)
{
try
{
Logger.Debug($"Sending request for requestId:{requestId} at {DateTime.UtcNow:HH:mm:ss.fff}");
Logger.Debug($"Deadline for requestId:{requestId} is {options.Deadline:HH:mm:ss.fff}");

var response = await client.SendAsync(new MessageRequest(), options);

Logger.Debug($"Received response for requestId:{requestId} at {DateTime.UtcNow:HH:mm:ss.fff}");
return new Result(response, State.Succeeded, reqId, numOfRetry);
}
catch (RpcException e)
{
Logger.Debug($"requestId:{requestId} has failed due to RpcException {e}");
Logger.Error(e.Message);
return new Result(State.Cancelled, requestId, numOfRetry, new Failure(e.Message));
}
/*Other catches are here*/
finally
{
numOfRetry++;
}
}
< /code>
Так что пара вопросов о Grpc: < /p>

Следует ли считать крайний срок «глобальный» (во всех повторных поисках) или Должны ли он быть перечисляется для каждого запроса? обработка повторений, которые могут быть лучше?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-for-grpc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»