Windows Server & Client - Separare i servizi contenuti in un processo

Capita delle volte, che ci si trova a dover fare troubleshooting di un processo che ospita al suo interno differenti servizi.

Supponiamo di dover analizzare il caso in cui risulta presente un handle leak per il processo svchost.exe, ovvero qualcuno al suo interno sta aprendo degli handles senza mai rilasciarli.

Ci interessa capire quale servizio effettivamente stia causando questa problematica.

Dal task manager, o dal performance monitor, verifichiamo che il PID del svchost che sta presentando la problematica è 896.

Da un command prompt possiamo esegure il seguente comando:

Tasklist /SVC

L’output sarà qualcosa di simile:

clip_image001

A questo punto abbiamo, dunque, identificato quali servizi sono contenuti all’interno del processo che presenta la problematica.

Non siamo però non grado, all’interno di quell’elenco, di identificare chi sta lasciando gli handles aperti.

Possiamo a tal fine isolare ciascun servizio all’interno di un svchost separato, in modo da identificare immediatamente quale presenti la problematica.

Per ottenere questo risultato, da un prompt dei comandi, dovremo eseguire:

sc config nomeservizio type= own

E’ importante che tra type= own ci sia uno spazio, altrimenti il comando non verrà eseguito e sarà restituito un errore.

Questo l’output generato, ad esempio per il servizio AeLookupSvc:

clip_image001[6]

Se eseguiamo questa operazione per tutti i servizi, dopo il successivo reboot avremo un svchost per ciascun servizio.

In questa situazione, identificato il processo che presenta la problematica, potremmo nuovamente verificare il servizio che ci gira all’interno sempre attraverso il comando:

Tasklist /SVC

A quel punto si potrà effettuare l’analisi specifica per il servizio individuato.

Al termine dell’analisi, si potranno consolidate nuovamente i servizi al’interno dello stesso svchost, attraverso il comando:

sc config nomeservizio type= share

Fino ad ora ho utilizzato il processo svchost.exe come esempio, ma è possibile eseguire questa procedura con qualsiasi processo che faccia l’hosting di più servizi.

Mattia Tocco
Support Escalation Engineer
Microsoft Enterprise Platform Support