Svchost.exe üzerinde gelişmiş performans raporlaması


20

Bu beni her zaman rahatsız eden bir şey, bu yüzden Sunucu Hatası topluluğuna soracağım.

Görev Yöneticisi'nde aldığınız üst düzey görevlerden fazlasını takip etmek için Process Explorer'ı seviyorum . Ancak svchost altında tek bir süreçte barındırılan bu düzine hizmetten hangisinin işlemci hızımı artırdığını sürekli olarak bilmek istiyorum .

Yani ... bu bilgiyi bulmanın müdahaleci olmayan bir yolu var mı?

Yanıtlar:


34

Evet, (neredeyse) müdahaleci olmayan ve kolay bir yol var:

Her hizmeti kendi SVCHOST.EXE işleminde çalıştırmak için ayırın ve CPU döngülerini tüketen hizmet Process Explorer'da kolayca görünür olacaktır ("=" karakterinden sonraki boşluk gereklidir):

SC Config Servicename Type= own

Bunu bir komut satırı penceresinde yapın veya bir BAT komut dosyasına yerleştirin. Yönetici ayrıcalıkları gerekir ve yürürlüğe girmeden önce bilgisayarın yeniden başlatılması gerekir.

Orijinal durum şu şekilde geri yüklenebilir:

SC Config Servicename Type= share

Örnek: Windows Yönetim Araçları'nı ayrı bir SVCHOST.EXE içinde çalıştırmak için:

SC Config winmgmt Type= own

Bu tekniğin, belki de bellek tüketimini biraz arttırması dışında, hiçbir olumsuz etkisi yoktur. Ayrıca, her hizmet için CPU kullanımını gözlemlemenin yanı sıra, her bir hizmet için sayfa hataları delta, disk G / Ç okuma hızı ve disk G / Ç yazma hızını gözlemlemeyi de kolaylaştırır. İşlem Gezgini için, Sütunları Görüntüle / Seç menüsü: sekmesi İşlem Belleği / Sayfa Hatası Delta, sekmesi İşlem Performansı / IO Delta Yazma Baytları, sekmesi İşlem Performansı / IO Delta Okuma Baytları.


Çoğu sistemde çok sayıda hizmeti olan tek bir SVCHOST.EXE işlemi vardır. Ben (doğrudan bir komut satırı penceresine yapıştırılabilir) bu dizi kullandık:

rem  1. "Automatic Updates"
SC Config wuauserv Type= own

rem  2. "COM+ Event System"
SC Config EventSystem Type= own

rem  3. "Computer Browser"
SC Config Browser Type= own

rem  4. "Cryptographic Services"
SC Config CryptSvc Type= own

rem  5. "Distributed Link Tracking"
SC Config TrkWks Type= own

rem  6. "Help and Support"
SC Config helpsvc Type= own

rem  7. "Logical Disk Manager"
SC Config dmserver Type= own

rem  8. "Network Connections"
SC Config Netman Type= own

rem  9. "Network Location Awareness"
SC Config NLA Type= own

rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own

rem 11. "Secondary Logon"
SC Config seclogon Type= own

rem 12. "Server"
SC Config lanmanserver Type= own

rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own

rem 14. "System Event Notification"
SC Config SENS Type= own

rem 15. "System Restore Service"
SC Config srservice Type= own

rem 16. "Task Scheduler"
SC Config Schedule Type= own

rem 17. "Telephony"
SC Config TapiSrv Type= own

rem 18. "Terminal Services"
SC Config TermService Type= own

rem 19. "Themes"
SC Config Themes Type= own

rem 20. "Windows Audio"
SC Config AudioSrv Type= own

rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own

rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own

rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own

rem 24. "Workstation"
SC Config lanmanworkstation Type= own

rem End.

4
vay, harika çözüm +1
Matt Simmons

2
PowerShell betiğini öneren postere: Denedim ve başarıyla tüm hizmetlerimi değiştirdi. Ancak, yeniden başlatıldığında bir hata kutusu açılır ve yeniden başlatma tetiklenir. 'Son iyi yapılandırma' ile geri yüklemek zorunda kaldım. Dikkatli ol.
user42670


1
@ChrisS: Bunlar Windows'un sonraki sürümlerinde kurcalanmaya karşı korunur; Sanırım Windows XP'de önemli ...
Tamara Wijsman

2
@ChrisS Paylaşılanlar listesine bağlantı için teşekkürler! Bu site artık ölü gibi görünüyor. Arşiv başına , liste: HTTPFilter, KDC, Netlogon, NTLMssp, PolicyAgent, ProtectedStorage, SamSs, Eventlog, PlugPlay(tümü ile ilişkili lsass.exe)
cxw

2

Doğrudan yapmanın kolay bir yolunu bilmesem de, svchost işlemi için genellikle Process Explorer özellikler sayfasından çıkarım yapabilirsiniz. İşlem özelliklerindeki Hizmetler sekmesi, bu işlemde hangi hizmetlerin barındırıldığını size bildirir. İş parçacıkları sekmesi, çalışan iş parçacığı ve iş parçacığı yığınlarının yanı sıra CPU kullanımlarını gösterir. Genellikle iş parçacığındaki başlangıç ​​adresi, giriş noktası DLL bir belirtisi ve uzantısı, o iş parçacığı üzerinde çalışan hizmet verir. Diğer zamanlarda evre iş parçacığına bakabilir ve çağrı yığınında hangi kod parçasının çalıştığını söyleyen modül adını görebilirsiniz.


1

Servis Açıklama aracını deneyin . O:

  1. Svchost.exe işlemini paylaşan hizmetleri depolar.
  2. Hizmetleri ayrı bir işlemde çalışacak şekilde yapılandırır. Yeniden başlattıktan sonra her servisi ayrı bir işlemde göreceksiniz.
  3. # 1 numaralı adımda depolanan tüm hizmetleri tek bir işleme geri döndürür.

Görüş ve önerilerinizi bekliyoruz.

@Peter Mortensen: Fikir için teşekkürler.


1
Dmytro, Hizmet İfşa Aracınızı nasıl kullanacağımı nereden öğrenebilirim? Windows 7'de service_disclosure.exe'yi indirip çalıştırdım. Kısaca siyah bir komut penceresinin açılıp kapandığını gördüm, ancak başka bir şey olmadı. Bu endişe vericiydi! Bilgisayarıma ne yaptığını ve aracın nasıl düzgün bir şekilde kullanılacağını bilmek istiyorum.
DeveloperDan

Merhaba Dan. Lütfen bu adım adım kılavuzu düşünün ( sourceforge.net/p/svcdisclsr/wiki/Home )
Dmytro Ovdiienko

1

Dikkat: Lütfen uygulamadan önce gerekli araştırmaları yapın, geri yükleme noktasını ve yedekleme prosedürlerini yapın ve daha sonra her şeyin hala çalışıp çalışmadığını kontrol edin. Bundan yalnızca RAID olmayan sistemlerde Kurtarma Ortamı ve hem RAID hem de RAID olmayan sistemlerde Güvenli Mod aracılığıyla kurtarma işlemi yapmak mümkündür. Bu, sunucularda değil, bir geliştirici makinesinde test edilmiştir.

Powershell'de, aşağıdaki komutları kullanarak tüm lsass olmayan hizmetler için bunu yapabilirsiniz:

Get-Service | ForEach-Object `
    { SC.EXE config $_.Name type= own }
ForEach ($svc in @("efs", "keyiso", "netlogon", "policyagent", "samss", "vaultsvc", `
    "was", "w3svc")) `
    { SC.EXE config $svc type= share }

Burada hariç tutulan listenin , grup ilkesi aracısının önyükleme sırasında düzgün iletişim kurması için gereken polis memuru dışında paylaşılan bir lsass.exe'de çalışması gerekir .

Ayrıca son zamanlarda keşfetti oldu (İşlem Etkinleştirme) ve W3svc onlar istisnalar eklenmiştir böylece onların süreçlerini paylaşmak için (IIS World Wide Web) ihtiyacı.

Bu, Windows 10 (1607, build 14393,953) üzerinde test edilmiştir, hariç tutma XP'de farklı ... .


0

Bu hala cevap istediğiniz bir soru olup olmadığını bilmiyorum, ama bir müşterinin svchost hatası giderirken, tam olarak bunun için bir komut satırı olduğunu öğrendim: "tasklist / svc" Çalışan işlemlerin tam bir listesini verir, işlem kimliği ve her işlemin çalıştığı hizmetlerle. İşlemci kullanımı sağlamaz, ancak bunları işlem kimliğiyle bir seferde bir işlem kapatabilir ve en azından hangi hizmet grubunun CPU'nuzu tıkadığını öğrenebilirsiniz.


0

Bugünlerde, hizmet türlerini "Kendi İşlemler" olarak değiştirmek ve her birinin belleğini ayrı ayrı görmek için PowerShell'i kullanabilirsiniz. Bu Gist kodun tamamını gösterir. Ana fikir, hizmet türünü en az müdahaleci yerine en müdahaleci şekilde değiştirmeye çalışmaktır:

$win32Service = Get-CimInstance -ClassName Win32_Service -Filter "Name = '$ServiceName'" -Verbose:$false

if ($win32Service)
{
    if (!(Set-ServiceTypeToOwnProcessByCim $win32Service))
    {
        if (!(Set-ServiceTypeToOwnProcessByWindowsRegistry $win32Service))
        {
            if (Grant-FullControlRightsOnServiceRegistryKeyToCurrentUser $win32Service)
            {
                Set-ServiceTypeToOwnProcessByWindowsRegistry $win32Service | Out-Null
            }
        }
    }
}
else
{
    Write-Warning "[$ServiceName] Service not found"
}

Set-ServiceTypeToOwnProcess.ps1Ve Enable-Privilege.ps1dosyalarını aynı klasöre koyarken, komut dosyasını şu şekilde yürütebilirsiniz:

.\Set-ServiceTypeToOwnProcess.ps1 -ServiceName 'Appinfo', 'gpsvc', 'Schedule', 'SENS', 'SessionEnv', 'wuauserv'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.