Làm thế nào để chẩn đoán việc sử dụng CPU bất thường bằng svchost.exe? [bản sao]


19

Câu hỏi này đã có câu trả lời ở đây:

Tôi đã có một máy tính xách tay với hệ thống Win 7 32 bit được cung cấp bởi Pentium lõi kép (đó là máy tính xách tay 2010). Đôi khi nó hoạt động tốt, nhưng thường thì nó không hoạt động ở mức tải CPU 100%. CPU được tiêu thụ bởi hai quá trình svchost.exe (mỗi 50%). Theo tôi hiểu, đây là một dịch vụ lưu trữ. Có cách nào để tìm ra dịch vụ nào là thủ phạm không?

Lưu ý: điều này xảy ra ngay cả trong chế độ an toàn.


1
Bạn có thể sử dụng trình thám hiểm quy trình để xem xét các dịch vụ đang chạy trong hai trường hợp của Svchost ( technet.microsoft.com/en-us/sysi
INTERNals / prosexsexplorer.aspx

@Yorik: Tôi đã nghĩ về điều đó, nhưng ProcessExplorer không cho thấy gì về việc sử dụng.
Violet Hươu cao cổ

5
Trong Windows 7, tôi sẽ nói rằng hiện tại> 90% các sự cố CPU của Svchost có liên quan đến dịch vụ Windows Update. Nếu bạn gặp sự cố thực sự khi cập nhật hệ thống (có thể khó cài đặt mới với bộ xử lý cũ), hãy thử cài đặt KB3050265, KB3138612 và KB3145739 mà không có kết nối mạng. Sau đó khởi động lại và tìm kiếm các bản cập nhật.
ontrack

@ontrack: Thú vị. Trên thực tế, tôi nghĩ rằng việc kiểm tra các bản cập nhật bị vô hiệu hóa trên máy này, có lẽ nó chưa từng được cập nhật kể từ năm 2010 hoặc 2012. Và tôi không muốn cài đặt bản cập nhật, tôi chỉ cần khắc phục sự cố CPU. Nếu bạn đúng, chỉ cần vô hiệu hóa trợ giúp dịch vụ Windows Update?
Violet Hươu cao cổ

điều này đã được hỏi rất nhiều lần xem bản sao Bạn có thể thấy vấn đề lừa đảo WU. Giải quyết nó từ các bước trong câu trả lời của tôi: superuser.com/a/996072/174557
magicandre1981

Câu trả lời:


28

Là một phiên bản của Svchost.exe lưu trữ nhiều dịch vụ hệ thống, đây là cách phân tách các dịch vụ, mỗi dịch vụ của riêng bạn với Svchost.exe, để tìm ra dịch vụ nào tiêu thụ CPU.

Thủ tục như sau :

  1. Sử dụng Trình quản lý tác vụ để hiển thị tất cả các quy trình được sắp xếp theo CPU giảm dần và đánh dấu PID của các quy trình tiêu thụ CPU

  2. Trong một Dấu nhắc lệnh (cmd), hãy nhập lệnh
    Tasklist /svc /fi "IMAGENAME eq svchost.exe"
    nhập mô tả hình ảnh ở đây

  3. Các phiên bản có vấn đề của svchost.exe hiện có thể được tìm thấy bởi PID của họ và ở bên phải bạn sẽ tìm thấy một danh sách các dịch vụ hệ thống mà họ lưu trữ

  4. Đối với mỗi tên trong danh sách, hãy nhập lệnh sau trong Dấu nhắc lệnh (cmd) được chạy với tư cách quản trị viên:
    sc config <name> type= own
    (Lưu ý khoảng trắng giữa '=' và 'own')

  5. Khởi động lại

Các dịch vụ hệ thống mà bạn đã tách bây giờ sẽ chạy mỗi phiên bản Svchost.exe của riêng nó và có thể được nhìn thấy trong Trình quản lý tác vụ trong tab Quy trình. Bạn có thể nhấp chuột phải vào một phiên bản và chọn "Chuyển đến (các) Dịch vụ" để truy cập trực tiếp vào dịch vụ hoặc sử dụng lại lệnh danh sách tác vụ.

Để biết thêm thông tin, hãy xem bài viết của Microsoft
Bắt đầu với SVCHOST.EXE Khắc phục sự cố .


7

Process Explorer làm cho điều này trở nên dễ dàng. Tôi đã xác nhận điều này hoạt động với Process Explorer v16.20 trên Windows 7 Professional 64 bit và Windows 10 Pro 64 bit.

  1. Chạy Process Explorer nâng cao.
  2. Xác định vị trí một svchost.exequy trình có giá trị cao (hoặc thậm chí chỉ đo được / không trống) trong CPUcột. Sắp xếp theo Processhoặc CPUcột có thể hỗ trợ này.
  3. Nhấp chuột phải vào svchost.exequá trình và chọn Properties....
  4. Trong cửa sổ thuộc tính process, chọn Threadstab. Tất cả các chủ đề trong quá trình này sẽ được hiển thị.
  5. Xác định vị trí một chủ đề với giá trị cao (hoặc, một lần nữa, chỉ có thể đo / không trống) trong CPUcột. Sắp xếp theo CPUcột có thể hỗ trợ này.Tab Process Process process
  6. Các Servicecột sẽ hiển thị tên của dịch vụ, trong đó chủ đề đó đang chạy.

Nếu tên dịch vụ không quen thuộc với bạn ...

  1. Trong cửa sổ thuộc tính process, chọn Servicestab. Tất cả các dịch vụ chạy trong quá trình này sẽ được hiển thị.
  2. Khớp Servicecột trên Servicestab với giá trị của Servicecột trên Threadstab bạn đặt ở bước 6.Tab Process Process process Services
  3. Các Display Namecột sẽ hiển thị tên thân thiện của dịch vụ. Mô tả về dịch vụ được chọn sẽ xuất hiện bên dưới danh sách các dịch vụ.

À, tôi không biết về những chức năng nâng cao đó của Process Explorer. Cảm ơn.
Violet hươu cao cổ

3

Bạn có thể sử dụng Trình quản lý tác vụ . Có nhiều cách khác (dòng lệnh hoặc thậm chí viết một số chương trình bằng WinAPI ), nhưng tôi sẽ không thảo luận về chúng ở đây. Trước khi đi xa hơn, người dùng của bạn nên có đặc quyền quản trị.

Trên tab Quy trình :

  • Kiểm tra Hiển thị quy trình từ tất cả người dùng .
  • Nhấp chuột phải vào các quá trình "tiêu đề bảng" (có chứa tên cột như tên ảnh , PID , User Name , CPU , ...), và chọn Select Columns ... .
    • Trên hộp thoại bật lên, cuộn xuống và đảm bảo bạn kiểm tra Dòng lệnhPID (Mã định danh quy trình) sau đó nhấn OK .
  • Quay lại tab Quy trình , nhấp vào tiêu đề cột CPU để các quy trình sẽ được sắp xếp theo mức tiêu thụ CPU của chúng (lưu ý rằng các quy trình có thể được hiển thị theo thứ tự tăng dần / giảm dần - mỗi lần nhấp vào CPU sẽ chuyển các đơn đặt hàng), nhấp cho đến khi 2 quy trình xuất hiện ở đầu bảng. Bây giờ bạn có thể thấy dòng lệnh của họ (tôi không biết nhưng tôi có cảm giác rằng một trong số họ là netsvcs(Dịch vụ mạng)) và cũng là bộ vi xử lý của họ.

  • Tiếp theo, bạn cần kết hợp 2 quy trình với các dịch vụ. Cho rằng bạn có thể:

    • Nhấp chuột phải vào chúng và sau đó Tới dịch vụ (s) ... . Thao tác này sẽ chuyển sang tab Dịch vụ , có tất cả dịch vụ đang chạy trong quy trình đó được chọn (đối với tùy chọn này, bạn không cần bất kỳ bước nào trước đó :)).
    • Mở snapin Dịch vụ trong mmc . Khi nhân đôi trên một dịch vụ (chỉ có ý nghĩa để kiểm tra những dịch vụ đang chạy), Trong Đường dẫn để thực thi, bạn có thể thấy dòng lệnh của họ mà bạn nên thực hiện khớp.
  • Trên W10, bạn có thể xem thông tin chính xác bạn cần từ Trình giám sát tài nguyên (bạn có thể bắt đầu thông tin từ Trình quản lý tác vụ , tab Hiệu suất ). Ở đó bạn đi đến tab CPU và các dịch vụ và mức tiêu thụ CPU của chúng được liệt kê.

EDIT0 : Câu trả lời được cập nhật để cung cấp cách tiếp cận đơn giản hơn (và có ý nghĩa hơn), thay vì gãi đầu bên phải bằng cách sử dụng kiểu tay trái của tôi , mà tôi đã đăng ban đầu.


Tôi không bao giờ nhận thấy bạn có thể thấy dòng lệnh, gọn gàng! Không đơn giản như câu trả lời của harrymc, nhưng tốt để biết.
Violet Hươu cao cổ

Trình quản lý tác vụ có thể tự làm điều đó. Nếu một quy trình svchost được chọn khi chuyển sang tab Dịch vụ, các dịch vụ đang chạy trong quy trình đó sẽ được chọn ở đó.
Simon Richter

1
Có thật không? Trên W10, điều này không xảy ra (ít nhất là khi đã có một số dịch vụ được chọn). Cách duy nhất là bằng cách bấm vào quá trình, sau đó chọn Chuyển đến dịch vụ (tùy chọn mà tôi đã bỏ lỡ - rất có thể nó cũng tồn tại trong W7 ). Thật không may, tôi không thể kiểm tra.
CristiFati

1
@CristiFati tùy chọn này đã tồn tại kể từ Windows Vista (nguồn: technet.microsoft.com/en-us/l Library / ff642468.aspx ), có lẽ bạn nên thêm nó vào câu trả lời của mình thay vì khớp bằng tay
Vasily Alexeev
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.