Tôi gặp sự cố rằng điểm cuối/kết nối/nội suy của Máy chủ IdentityServer của tôi đôi khi rất chậm (10 giây cho một cuộc gọi). Như bạn có thể thấy dưới đây, hầu hết các cuộc gọi (18k) thực hiện một cách nhanh chóng (< 250ms).Profiler BLOCKED_TIME trong IdentityServer4/Newtonsoft.Json
Tôi đã kích hoạt mới Application Insights profiling và hầu hết các dấu vết chậm giống như thế này:
Như đã nói trên Application Insights profiler page:
BLOCKED_TIME
chỉ ra mã đang chờ một tài nguyên khác để khả dụng, s uch đang chờ đối tượng đồng bộ hóa, đợi để có một chuỗi hoặc chờ yêu cầu hoàn tất.
Nhưng tôi không có lý do gì để tin điều này nên chờ đợi điều gì đó. Không có yêu cầu tăng đột biến vì vậy tôi không nghĩ rằng không có đủ chủ đề có sẵn hoặc một cái gì đó. Bộ nhớ dường như không có vấn đề gì với gói dịch vụ ứng dụng của chúng tôi vì nó luôn ở mức khoảng 40%. Tôi cũng đã đào sâu vào nguồn của IdentityServer4 nhưng không thể xác định bất kỳ nguyên nhân nào cho việc này. Vì vậy, bây giờ tôi đang bị mắc kẹt. Bất cứ ai có thể chỉ cho tôi nguyên nhân có thể cho các yêu cầu chậm? Hoặc chỉ cho tôi theo hướng tốt để xác định nguyên nhân? Bất kỳ trợ giúp sẽ được nhiều đánh giá cao!
Chỉnh sửa với một số thông tin bổ sung: Chúng tôi sử dụng IdentityServer4.EntityFramework để lưu trữ mã thông báo tham chiếu trong sql azure sql. Tôi đã xem Thông tin chi tiết về ứng dụng và các truy vấn trong các yêu cầu chậm đó thực hiện sau 50ms. Vì vậy, tôi đoán nó không phải là cơ sở dữ liệu.
Bạn có thể hiển thị số lượng cuộc gọi cũng như thời gian thực hiện trong kết quả tiểu sử đó không? – dbc
Tôi không thấy tùy chọn để hiển thị số lượng cuộc gọi nhưng tôi đoán nó sẽ không nhiều vì nó sẽ chỉ tuần tự hóa mã thông báo một lần. – Zenuka