Một số sự kiện: Chúng tôi đã phát triển dịch vụ wcf hoạt động như một lớp giữa khách hàng và cơ sở dữ liệu. Tự động lưu trữ và chạy dưới dạng dịch vụ cửa sổ..NET Garbagecollector gặp rắc rối. Chặn 15-40 phút
Dịch vụ này lưu giữ một số bộ nhớ cache, trong đó bộ nhớ cache lớn nhất khoảng 1-2GB. Tổng dung lượng bộ nhớ thường khoảng 5-8gb. Kết nối song công và sử dụng giao thức tcp và tuần tự hóa được thực hiện với protobuf-net. Số lượng khách hàng được kết nối của chúng tôi thường dao động từ 1000-1500. Máy chủ là bộ vi xử lý 8 lõi của mô hình mới với bộ nhớ 64 GB và không còn hoạt động nào nữa sau đó là dịch vụ.
Vấn đề: Sau khoảng thời gian x, nó đã ở khắp mọi nơi từ một ngày đến một tuần dịch vụ cực kỳ chậm. Yêu cầu mất 0,5 giây có thể mất hơn một phút. Hành vi này diễn ra trong 15-40 phút hoặc đến khi khởi động lại dịch vụ.
Chúng tôi đã thực hiện: Chúng tôi đã kiểm tra kết nối mạng và mạng với máy chủ và không có vấn đề gì. Việc sử dụng CPU tăng lên đôi chút trong thời gian này từ f.eks. 30% trung bình đến 40-50% trung bình. Chúng tôi đã thực hiện các bãi chứa bộ nhớ và không có khóa logic nào trong mã chặn người dùng và không hoạt động nhiều. Dẫn mới nhất của chúng tôi là bộ thu gom rác. Trong perfmon, chúng ta có thể thấy rằng "% time in gc" liên tục trên 90%, (90-97%) và số lượng bộ sưu tập tăng lên. Cả GC0 và GC1. Chúng tôi nghi ngờ có một GC2 chặn chạy cũng nhưng chúng tôi đã phải khởi động lại dịch vụ vì đây là trong sản xuất vì vậy nó không tính trong thời gian 5min chúng tôi chạy perfmon. Dung lượng bộ nhớ là 7,6 Gb. Lưu ý: Các cuộc gọi xuất sắc tăng để các cuộc gọi đến đó nhưng dịch vụ không xử lý chúng.
Câu hỏi của tôi là, Người thu gom rác có thể ở trạng thái hoạt động và chặn liên tục trong hơn 15 phút không? hoặc là vấn đề có thể liên quan đến một số vấn đề khác?
Dịch vụ của chúng tôi chạy GC ở chế độ trạm làm việc và mã thời gian: Interactive Bây giờ chúng tôi đã thay đổi điều này thành Server và SustainedLowLatency và hy vọng điều này sẽ giúp phần nào. Chúng tôi có thể làm gì khác nếu máy thu gom rác của nó không?
Chỉnh sửa: Mức sử dụng bộ nhớ lớn là do thiết kế, dữ liệu trong bộ nhớ cache lớn và có nhiều bộ nhớ hơn.
Đề xuất tìm ra nguyên nhân gốc rễ của việc sử dụng bộ nhớ cao ... ví dụ: hãy thử thêm "sử dụng" khối vào bộ nhớ miễn phí khi hoàn thành bằng cách sử dụng đối tượng đó – User2012384
Chỉ vì tò mò, bạn có bao nhiêu chủ đề? Kiểm tra trong Trình quản lý tác vụ. Ít nhất một vài năm trước đây đã có một vấn đề mà các chủ đề bạn đã có (thậm chí nhàn rỗi), chậm hơn GC – xanatos
"Có thể các nhà sưu tập rác có được trong một tiểu bang nơi nó chạy và khối liên tục trong hơn 15 phút"? Hoàn toàn, nếu nó liên tục cần phải giải phóng bộ nhớ nhưng không thể vì bạn tiếp tục giữ nó. Như Raymond Chen đã nói, "một bộ nhớ đệm với một chính sách xấu là một tên khác cho một rò rỉ bộ nhớ". –