Gần đây chúng tôi đã gặp sự cố trên máy chủ trực tiếp khiến Ứng dụng web của chúng tôi ngừng phản hồi. Tất cả những gì chúng tôi nhận được là 503 lỗi cho đến khi chúng tôi khởi động lại máy chủ thì mọi chuyện vẫn ổn. Cuối cùng, tôi đã lần theo dấu vết của nó trở lại omeprr.log và tìm thấy rất nhiều lỗi 1_Connections_Refuse.
Điều tra sâu hơn dường như chỉ ra rằng chúng tôi đã đạt đến giới hạn nhóm không được phân loại. Kể từ đó, chúng tôi đã theo dõi bộ nhớ pool không được phân vùng bằng Poolmon.exe và chúng tôi tin rằng chúng tôi đã xác định được thẻ gây ra sự cố.
Tag Type Allocs Frees Diff Bytes Per Alloc
Even Nonp 51,231,806 50,633,533 684,922 32,878,688 48
Nếu chúng tôi sử dụng poolmon.exe / g, nó sẽ hiển thị Trình điều khiển được ánh xạ dưới dạng [<unknown> đối tượng sự kiện].
Điều này là khá nhiều không có sự giúp đỡ nào cả. Nhóm của tôi đã dành thời gian đáng kể để nghiên cứu vấn đề này và không thể tìm thấy một quy trình để thu hẹp vấn đề này xuống một ứng dụng hoặc dịch vụ cụ thể. Tôi có cảm giác rằng hầu hết mọi người dường như giải quyết vấn đề bằng cách giết các tiến trình trên máy cho đến khi họ thấy thiết lập lại bộ nhớ không bị chặn. Đây không phải là chính xác những gì bạn muốn thấy khi làm việc trên một máy sản xuất.
Nếu tôi mở Trình quản lý tác vụ và xem danh sách quy trình. Tôi thấy MailService.exe có giá trị NP Pool là 105K, cao hơn 36K so với giá trị của quy trình được liệt kê thứ hai. Vì chúng tôi đã có một số vấn đề với Máy chủ Thư của chúng tôi trong quá khứ (có thể có hoặc không liên quan đến vấn đề này) cảm giác ruột của tôi là điều này gây ra sự cố.
Tuy nhiên, trước khi chúng tôi ngừng khởi động lại các dịch vụ, tôi muốn có một chút chắc chắn hơn là chỉ là "cảm giác ruột".
Tôi cũng đã thử sử dụng poolmon.exe / c nhưng điều này luôn trả về lỗi:
unable to load msvcr70.dll/msvcp70.dll
và nó không tạo localtag.txt. Đồng nghiệp của tôi đã phải tải xuống pooltag.txt từ internet vì chúng tôi không thể tìm ra vị trí của nó. Chúng tôi không có trình gỡ lỗi win hoặc cài đặt DDK win (mà tôi có thể thấy). Có thể lỗi ở trên được đưa ra bởi vì chúng tôi không cài đặt một trong hai lỗi này - nhưng tôi không biết.
Cuối cùng tôi đã thử:
C:\windows\system32\driver\findstr /m /l Even *.sys
Điều này trả về một danh sách khá lớn các tệp .sys và một lần nữa hoàn toàn không hữu ích với vấn đề trong tay.
Vì vậy, câu hỏi của tôi là: Có cách nào khác để thu hẹp nguyên nhân rò rỉ bộ nhớ này không?
CẬP NHẬT:
Như được đề xuất bên dưới, tôi đã đăng nhập Pool Nonpaged Byte cho ngày cuối cùng hoặc lâu hơn để xem liệu có quá trình nào đang có xu hướng hay không. Đối với hầu hết các phần, tất cả các quy trình dường như khá tĩnh trong việc sử dụng chúng. Hai trong số họ trông có vẻ nhột lên. Tôi sẽ tiếp tục theo dõi điều này trong vài ngày tới.
Tôi cũng quên đề cập trước đó rằng không có quá trình nào có vẻ như đang sử dụng quá nhiều số lần xử lý.
CẬP NHẬT 2:
Tôi đã theo dõi điều này trong vài tuần qua. Cả nhóm byte không được phân vùng cho các quy trình riêng lẻ và tổng số nhóm byte không được phân vùng vẫn tương đối ổn định trong thời gian đó. Trong thời gian này, Windows đã được cập nhật và máy chủ khởi động lại nên tôi tự hỏi liệu điều đó có giải quyết được vấn đề không. Tôi chắc chắn không thấy sự tăng trưởng nhất quán trong Nhóm Byte Nonpaged bây giờ mà tôi đã ở trước đó.