2009-06-04 38 views
10

Tôi hiểu rằng câu trả lời cho câu hỏi này có thể phụ thuộc vào cài đặt đăng ký và trên phiên bản Windows, và có lẽ trên lượng RAM nếu không có đủ bộ nhớ. Vì lợi ích của câu hỏi này, giả sử rằng máy chủ có nhiều RAM (3+ GiB).Có bao nhiêu xử lý Windows đang sử dụng là "quá nhiều"?

Nếu một ứng dụng (ứng dụng của bên thứ 3 trong trường hợp này) rò rỉ xử lý ở vài trăm giờ, có bao nhiêu tổng số xử lý mà ứng dụng đó có thể bị rò rỉ trước khi các ứng dụng khác gặp sự cố? Bởi "rắc rối" tôi có nghĩa là, ví dụ, không bắt đầu một chủ đề, không mở một tập tin, và như vậy.

Tôi đã thấy một số máy chủ (tải nhẹ) chạy tốt với quy trình (thường là quy trình cơ sở dữ liệu) sử dụng vài chục nghìn tay cầm, vì vậy giới hạn xử lý 10000 cũ rõ ràng không phải là vấn đề ở đây. (Và đó cũng là giới hạn cho mỗi quá trình, do đó, sẽ không ảnh hưởng đến đơn đăng ký của tôi cũng như dưới thời điểm đó.)

Có thể ai đó trả lời câu hỏi hoặc chỉ cho tôi một số tài nguyên giải thích về tổng số xử lý Máy chủ Windows sẽ cho phép trước khi bạn có hiệu lực chạy ra ngoài (xử lý hoặc tài nguyên hệ thống khác)?

+1

này có vẻ giống như một loại ServerFault của câu hỏi có lẽ. –

+1

@Matthew Vines: Tôi nghĩ về điều đó, nhưng đã quyết định kể từ khi tôi gặp phải vấn đề này với một chương trình mà tôi duy trì, mặc dù ứng dụng của bên thứ 3 là ứng dụng bị rò rỉ, nó thuộc về trang web lập trình viên. Tôi là một quản trị viên cố gắng tìm ra điều này, SF sẽ thích hợp hơn. – Eddie

Trả lời

15

Xem Raymond Chen's post on this topic. Trình quản lý cửa sổ thực thi giới hạn 10K cho mỗi quy trình và có tổng giới hạn là 32K trên toàn bộ hệ thống. Vì vậy, nếu nó "chỉ" rò rỉ 100 xử lý mỗi giờ, sau đó bạn có một vài ngày của thời gian hoạt động trước khi nó bắt đầu misbehaving.

Lưu ý rằng không phải tất cả các tay cầm đều bằng nhau. Cửa sổ xử lý không phải là xử lý DB, ví dụ, và có thể làm theo các quy tắc khác nhau. Vì vậy, hạn chế này có thể không áp dụng, tùy thuộc vào loại xử lý chương trình bị rò rỉ. Also read this blog post.

+1

Trong [bài viết này] (http://blogs.technet.com/b/markrussinovich/archive/ 2009/09/29/3283844.aspx), nó tuyên bố rằng bạn có thể đạt tới 16 triệu xử lý cho mỗi quá trình. Tôi cũng nhận thấy trong Windows XP rằng hai trong số các quy trình của tôi đã vượt quá giới hạn 10k. Tôi bối rối. – jsirr13

+0

Tôi đoán giới hạn thay đổi trong khi đó, cũng xem câu trả lời của Thomas Weller. – Liviu

2

Theo this, 10000.

+0

Đó chỉ là tay cầm đối tượng cửa sổ và không ảnh hưởng đến các loại xử lý khác (tệp, sự kiện, mutex, v.v.) –

5

desktop heap, là một nhóm bộ nhớ nơi bộ xử lý "đồ vật" thực sự đại diện cho cuộc sống. Đôi khi nó không quá nhiều mức xử lý mà bạn đã phân bổ nhưng bộ nhớ mỗi đối tượng trong tay cầm đó đang sử dụng như thế nào. Bạn có thể gỡ lỗi heap this way. Nó là một pain để cài đặt.

(điều này đã được tái chế từ một một trong những câu trả lời của tôi)

+1

Công cụ gỡ lỗi không còn liên quan đến Windows 7 và tôi giả định sau. – AnthonyVO

3

Kể từ những giá trị có thể thay đổi với phiên bản Windows mới, bạn có thể sử dụng công cụ Sysinternals TestLimit/TestLimit64 để có được một ước tính sơ bộ. Phiên bản x64 có thể chạy trong một thời gian, đặc biệt là để kiểm tra bộ nhớ (nó có thể sử dụng đĩa cứng (tập tin trao đổi) để có thêm bộ nhớ ảo).

Lấy công cụ từ tùy chọn dòng http://live.sysinternals.com/WindowsInternals/ hoặc http://download.sysinternals.com/files/TestLimit.zip

Command:

-p check process limit 
-t check thread limit 
-h check handle limit 
-u check user handle limit 
Các vấn đề liên quan