Проблемы производительности Asp.Net WebApi / медленный ответ - PullRequest
0 голосов
/ 08 апреля 2019

В моем WebApi (.Net 4.6.2) у меня есть проблема с одним вызовом, который работает необычайно медленно (~ 15 секунд). Когда я приступил к его анализу, я обнаружил, что код внутри вызова выполняется относительно быстро (выполняет вызов и обработку БД в течение <200 мс) и отправляет ответ клиенту. </p>

Я думал, что сериализация (я использую JSON) требует времени. Поэтому я установил точку останова в методе GetObjectData() класса, который я пытаюсь сериализовать. И это тоже делает свою работу за несколько миллисекунд.

После этого, если я разрешу его запустить, все равно уйдет оставшееся время (около 14 секунд) (это время на стороне клиента, загрузка не происходит)

Как я могу отладить, что происходит после GetObjectData() и определить узкое место?

1 Ответ

1 голос
/ 08 апреля 2019

Я бы предложил установить fiddler и проверить значения clientBeginRequest и clientEndRequest там, как объяснено здесь .

Если ваш веб-API работает по протоколу HTTP, вы можете включить перехват HTTPS в Fiddler.

Вы можете увидеть таймеры, как показано ниже:

enter image description here

Затем вы можете решить, является ли медлительность на сервере или в клиентском приложении.

Вы также можете попробовать вызвать свой API через почтальона и проверить, сколько времени занимает ответ, чтобы появиться в почтальоне.

Если проблема на стороне сервера, вы можете добавить фильтры журналов или HttpModules, чтобы увидеть, когда был получен запрос, когда был отправлен ответ, сколько времени заняло выполнение каждого метода. Вам также следует проверить загрузку ЦП сервера и использование памяти / диска, чтобы выяснить, не вызывают ли они какие-либо проблемы с производительностью ваших API.

Надеюсь, это поможет локализовать проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...