Я работаю над некоторым старым кодом 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
Лучшие практики для внедрения сроков и повторений для GRPC [закрыто] ⇐ C#
Место общения программистов C#
1738734112
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>
Следует ли считать крайний срок «глобальный» (во всех повторных поисках) или Должны ли он быть перечисляется для каждого запроса? обработка повторений, которые могут быть лучше?>
Подробнее здесь: [url]https://stackoverflow.com/questions/79413759/best-practices-for-implementing-deadlines-and-retries-for-grpc[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия