Làm cách nào để giới hạn bộ nhớ được sử dụng bởi một ứng dụng trong IIS?


15

Các tiến trình công nhân IIS đang chiếm rất nhiều bộ nhớ trên các máy chủ của chúng tôi. Tôi muốn giới hạn bộ nhớ mỗi ứng dụng có thể sử dụng. Tôi bối rối không biết nên đặt giới hạn cho Giới hạn bộ nhớ ảo hay Giới hạn bộ nhớ riêng. Mỗi ứng dụng trong IIS của chúng tôi nằm trong nhóm ứng dụng riêng.

Nếu tôi đặt giới hạn bộ nhớ riêng thành 500MB và giới hạn bộ nhớ ảo là 3 GB. Khi nào nhóm ứng dụng tái chế? Nó có tái chế sau khi đạt 500MB hoặc sau khi đạt 3GB.


Các tùy chọn 'Giới hạn bộ nhớ ảo' và 'Giới hạn bộ nhớ riêng' mà bạn nói đến ở đâu?
Đại tá Panic

1
@ColonelPanic Trên IIS7.5, chúng nằm trong phần của nhóm ứng dụng Advanced Settings -> Recycling.
ngm

Câu trả lời:


15

IIS sẽ tôn trọng cả hai giới hạn đó.

Nếu bạn đặt giới hạn byte riêng 500 MB, ngay khi quy trình worker cố gắng cam kết 501MB, IIS sẽ tạo ra một quy trình worker mới và giết cái cũ.

Nếu bạn đặt giới hạn bộ nhớ ảo 3 GB, ngay khi quy trình worker cố gắng dự trữ 3.001GB, IIS sẽ tạo ra một tiến trình worker mới và giết cái cũ.

Nếu bạn đang ở trên nền tảng 64 bit, bạn nên biết rằng ứng dụng ASP.NET dự trữ mạnh mẽ bộ nhớ ảo. Ví dụ, tôi có một ứng dụng tại một trang trại chỉ sử dụng 88 MB byte riêng tư, nhưng hiện tại nó đang ở mức Kích thước ảo 5,4 GB. Tôi tin rằng việc đặt trước bộ nhớ ảo là một chức năng của RAM vật lý trên máy chủ. Điều quan trọng là phải hiểu rằng trên nền tảng 64 bit, việc lưu trữ một phần lớn bộ nhớ ảo có tác động hiệu suất bằng không.

Về cơ bản, nếu bạn gặp vấn đề về tiêu thụ bộ nhớ trên máy chủ IIS, cài đặt bạn muốn giới hạn là Bộ nhớ riêng / byte, đây là những gì tương ứng với việc sử dụng bộ nhớ thực tế.


Cảm ơn Dominic, Có cách nào chúng ta có thể thiết lập quy trình sử dụng bộ nhớ riêng 500Mb và một khi nó vượt qua giới hạn đó, hãy bắt đầu sử dụng bộ nhớ ảo trên đĩa mà không cần tái chế?
kishore

1
Không phải là tôi biết. Trong một ứng dụng ASP.NET một khi bạn bắt đầu có các vấn đề về byte, về cơ bản bạn có 3 tùy chọn. 1. Tái chế quy trình khi bạn đạt đến giới hạn hoặc hàng đêm vào giờ nghỉ (rõ ràng không được ưu tiên và đừng quên quản lý dữ liệu phiên chính xác nếu tái chế trong cửa sổ sử dụng) 2. Nhận thêm bộ nhớ vật lý cho ứng dụng (thêm RAM đến trang trại máy chủ hoặc chuyển đến trang trại khác, đây có thể là giải pháp đơn giản nhất tùy thuộc vào tình huống của bạn). 3. Sửa đổi ứng dụng sao cho nó sử dụng bộ nhớ hiệu quả hơn. (Tùy chọn tốt nhất, nhưng có thể khó thực hiện)
Dominic D

Tôi cũng nhận thấy sự tích cực của bộ nhớ trong một số ứng dụng ASP.NET. Bất cứ ai có thể đề nghị một số tài nguyên tốt về chủ đề này để nghiên cứu? Tôi muốn hiểu thêm về cách thức và lý do tại sao nó xảy ra ... Điều tôi quan sát được là càng có nhiều bộ nhớ thì ứng dụng càng phân bổ nhiều bộ nhớ.
Tom Pažourek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.