Jak wyłączyć VsHub.exe w zasobniku systemowym?

138

Uruchamianie programu Visual Studio 2015 uruchamia również dwa inne pliki wykonywalne:

VsHub.exe

i

Microsoft.VsHub.Server.HttpHost.exe

Oba zajmują dużo miejsca w menedżerze zadań.

Jak mogę usunąć tę opcję „Visual Studio Hub”? Nie używam żadnych funkcji programu Visual Studio z najwyższej półki, w tym Visual Studio Hub.

Reda Lahdili
źródło
15
Cóż, naprawdę nie używam Visual Studio do czegoś innego niż edycja kodu. Używam Unity, a kompilacja odbywa się za pomocą wbudowanego kompilatora, więc wszystko, co chcę zobaczyć w VS, to fantazyjny edytor tekstu. Ponadto nie chcę używać VS Code, ponieważ brakuje mu automatycznego uzupełniania dla Unity i nie możesz tworzyć własnych niestandardowych motywów.
Reda Lahdili
2
@RedaLahdili Co ostatecznie zrobiłeś? Oba pliki działają nawet wtedy, gdy nie korzystam z VS2015.
prettyvoid
2
Twoja sprawa wydaje się gorsza niż moja! Niestety nie znalazłem żadnego rozwiązania. Naprawdę muszą coś z tym zrobić. Czasami VSHub zajmuje więcej pamięci niż sam VS. Uggh ... Informuj nas na bieżąco, jeśli znajdziesz jakieś rozwiązanie.
Reda Lahdili
1
Innym rozwiązaniem jest: stackoverflow.com/questions/31904929/…
oguzh4n
1
Microsoft.VsHub.Server.HttpHostx64.exe ma wyciek pamięci, który powoduje zamknięcie mojego systemu Windows 10. Zobacz: connect.microsoft.com/VisualStudio/feedback/details/1610160/…
Olivier Jacot-Descombes

Odpowiedzi:

131

Pomyślałem, że spróbuję rzucić trochę światła na VS Hub i do czego jest przeznaczony. Pracuję dla Microsoft.

Jak wspomina Sraboy, VS Hub jest hostem usług poza procesem, z którego korzysta Visual Studio (i inne produkty oparte na powłoce VS, takie jak Blend) w celu obsługi komunikacji z wieloma narzędziami, lepszej responsywności w devenv (VS) i umożliwić niektórym usługom przedłużenie okresu życia procesu tarła. Zestaw usług obecnie hostowanych w VS Hub obejmuje wiele elementów wywoływanych w innych odpowiedziach, takich jak ustawienia roamingu, przetwarzanie dużych obszarów danych ETL renderowanych w narzędziach diagnostycznych, niektóre raportowanie telemetryczne i automatyczna aktualizacja rozszerzenia i powiadomienia. Ten zestaw usług najprawdopodobniej rozwinie się w przyszłości, więc nawet jeśli żadna z tych usług nie wydaje się w tej chwili potrzebna, w przyszłości będą tam hostowane dodatkowe usługi (tj. Wyłączenie vshub jest bardzo trudne.

Pod względem czasu życia procesy vshub i hosta (tj. Microsoft.VsHub.Server.HttpHost (64) .exe) mogą pozostać uruchomione po zamknięciu devenv.exe. Jednak nie powinny one działać w nieskończoność. W większości przypadków procesy te kończą się w ciągu ~ 5 minut od ostatniego wystąpienia zamknięcia powłoki VS. Jeśli więc masz uruchomioną instancję VS (devenv.exe) i instancję Blend (blend.exe) i wyłączysz devenv.exe, vshub i powiązane procesy hosta będą nadal działać. Jeśli następnie zamkniesz blend.exe, program vshub i powiązany proces hosta będą nadal działać. Jednak po około 5 minutach te dodatkowe procesy zostaną zamknięte. Jeśli w ciągu 5 minut uruchomisz kolejne wystąpienie devenv.exe, vshub i powiązane procesy hosta nie zostaną zakończone,

Pod względem zasobów sam proces vshub.exe powinien zawsze być stosunkowo zwinny. Jeśli kiedykolwiek stanie się duży, to jest to błąd i chciałbym o tym wiedzieć, abyśmy mogli go naprawić :-) Z drugiej strony procesy hosta mogą być bardzo duże w zależności od hostowanej usługi. W szczególności narzędzia diagnostyczne działają poprzez przetwarzanie ETL. ETL może być bardzo, bardzo duży i jako taki host może zużywać wiele zasobów. Zespół diagnostyczny szuka sposobów na zmniejszenie tego problemu, ale na razie zamknięcie okna narzędzia diagnostycznego, gdy nie jest ono potrzebne, powinno pomóc złagodzić problem.

Jeśli chodzi o łączność online, w obecnym zestawie hostowanych usług istnieją obecnie trzy główne źródła (uwaga: to się zmieni z czasem). Po pierwsze, jak wspomina user3345048, usługa wykrywająca i automatycznie aktualizująca rozszerzenia działa w tym procesie. Opcje kontrolujące tę komunikację znajdują się w menu Narzędzia | Opcje | Środowisko | Rozszerzenia i aktualizacje (zobacz pierwsze dwa pola wyboru). Po drugie, ustawienia roamingu działają jako usługa w VS Hub. Ustawienie kontrolujące to zachowanie znajduje się w menu Narzędzia | Opcje | Środowisko | Zsynchronizowane ustawienia (lub bardziej całościowo, jeśli nie zalogujesz się na konto personalizacji w prawym górnym rogu VS). Wreszcie VS Hub zgłasza dane telemetryczne. Objętość tych danych można znacznie zmniejszyć za pomocąPomoc | Opcje opinii klientów | Pozycja menu Ustawienia… . Możesz również przeczytać o rodzaju danych telemetrycznych, które gromadzi firma Microsoft, oraz o tym, jak są one używane w tej lokalizacji.

Anson Horton
źródło
40
Anson - Mam program Visual Studio 2015 z wersją RTM 1 w systemie Windows 7. Jeśli otwieram Fiddler4, widzę setki lub więcej wywołań na sekundę do localhost / vshub / sameGuidHereOverAndOver. Jest to całkowicie niedopuszczalne - nie wiem, co według vshost.exe robi, ale kompletnie zwariował. Mogę zabić ten proces i nadal się dzieje. Może trzeba będzie wrócić do 2013 roku ...
Mario
4
@Mario - jak widzieliście vshub często działa jako lokalny serwer http, więc spodziewać można zobaczyć trochę ruchu, gdy jest uruchomiony (HTTP działa jako IPC). Setki żądań na sekundę w dowolnym długotrwałym okresie to zdecydowanie błąd. Możesz sprawdzić dzienniki w% temp% \ VsHub, które powinny wskazywać, czy są zgłaszane jakieś wyjątki, i oczywiście wiesz już, jak sprawdzić ruch. Najlepszą rzeczą do zrobienia byłoby zgłoszenie tego problemu za pośrednictwem connect.microsoft.com, ponieważ da nam to kanał do zbierania dzienników i tym podobnych, a także spróbuje upewnić się, że zostanie naprawiony
Anson Horton
28
Oto Microsoft.VsHub.Server.HttpHost64.exe jest „gibki” na moim komputerze - imgur.com/DKvSNqf - to 1 GB pamięci RAM, przy której osiągnął szczyt. Miły.
sh1rts
7
@ sh1rts - Rozumiem twoją frustrację. "Gibki" komentarz, który zrobiłem powyżej, był skierowany do vshub.exe. Microsoft.VsHub.Server.HttpHost64.exe to proces hosta, który uruchamia różne usługi, w tym niektóre, które mogą wymagać dużej ilości pamięci (np. Narzędzia diagnostyczne uruchamiane po użyciu klawisza F5 lub jeśli jawnie zdecydujesz się przeprowadzić analizę responsywności pamięci lub interfejsu użytkownika) ). Możesz wypróbować niektóre z przełączników, o których wspomniałem powyżej, aby wyłączyć niektóre z tych usług, aby sprawdzić, czy to pomaga - ale ogólnie będziemy pracować nad zmniejszeniem ogólnego obciążenia pamięci w przyszłych wersjach.
Anson Horton
17
Więc jaki jest sposób, aby przestać widzieć setki żądań / vshub / GUID w programie Fiddler. To uniemożliwia debugowanie dowolnego klienta HTTP w Visual Studio, ponieważ na każdym kroku podczas debugowania widzę ponad 10 żądań w skrzypcach i żądanie, które mnie interesuje, jest tracone :-(. Poza tym jest to bardzo nieefektywny sposób międzyprocesowy komunikacja w celu wysyłania żądań HTTP na hoście lokalnym.
Đonny
82

Coś, o czym nikt nie wspomniał powyżej ...

Według mojego dziennika zapory, VsHub.exe, Microsoft.VsHub.Server.HttpHost.exe i Microsoft.VsHub.Server.HttpHostx64.exe próbują komunikować się online .

Adresy, które widziałem, z którymi były próby połączeń wychodzących, to 191.236.194.164 (Microsoft Azure, Wichita Kansas) i 23.102.160.172 (Microsoft Azure, Redmond Washington).

Zdaję sobie sprawę, że „nowoczesne” oprogramowanie ma być zintegrowane z chmurą, ale ...

Jako osoba, która nie wymaga niczego od serwerów Microsoft Azure i która jest uzasadniona troską o prywatność i nie ujawnia żadnej części tego, nad czym pracuję, do świata zewnętrznego, naprawdę chciałbym A) mieć sposób, aby wybrać nie uruchamiać te programy lub B) otrzymać ustawienia ograniczające ich czat online. Tak, zapora blokuje połączenia, ale to ostateczność.

Wystarczy proste pole wyboru „[] Skontaktuj się z serwerami Microsoft Azure”. Nie ma dla mnie znaczenia, czy oznaczałoby to nie uruchamianie programów, o których mowa, czy po prostu brak ich połączeń online. Sądzę, że z perspektywy zasobów ten pierwszy byłby lepszy, ponieważ zużywałby mniej zasobów.

Z reguły nie proponowałbym zmiany plików w pakiecie plików zainstalowanej aplikacji, ale ponieważ mam środowisko maszyny wirtualnej, w którym mogę testować zmiany w Visual Studio 2015 bez większych konsekwencji (migawki są wspaniałe), próbowałem zmienić uprawnienia (aby usunąć dziedziczenie, a następnie uniemożliwić użytkownikom odczyt i wykonanie) do tych trzech plików.

Voila, koniec z uruchomionymi aplikacjami VsHub, próbującymi skontaktować się ze zdalnymi systemami.

Visual Studio przychodzi od razu. Nie widzę tutaj wad.

-Kolęda

NoelC
źródło
Wada: sam nie możesz już modyfikować tych plików.
harrymc
Nie wiem, co masz na myśli, harrymc. Czy możesz podać bardziej szczegółowe informacje? Mówisz o problemach z dostępem do uprawnień? Jako administrator nadal jesteś mistrzem nad każdym plikiem na swoim komputerze, chociaż firma Microsoft czasami przeszkadza. Ale jeśli rozumiesz, jak działają uprawnienia, możesz zrobić wszystko, co chcesz. W końcu pliki są na TWOIM komputerze. Jeśli masz na myśli, że usunąłeś swoje własne uprawnienia, źle to sformułowałem. Chodziło mi o to, że usunąłem uprawnienia, a nie dodałem ustawienie Odmów. Powinienem był użyć słowa „Disallow”.
NoelC
Po ustawieniu odmowy, aby ponownie uzyskać dostęp do uprawnień, należy najpierw ustawić siebie jako właściciela plików.
harrymc
Dobrze. NIE zaznaczaj pola w kolumnie „Odmów”. Zamiast tego ODSZUKAJ „Odczyt i wykonanie” w kolumnie Zezwalaj.
NoelC
2
Opierając się na moich doświadczeniach po aktualizacji 3, wystarczy zmienić uprawnienia programu vshub.exe w celu usunięcia dostępu do wykonywania.
NoelC
61

Używam systemu Windows 7 x64 z programem Visual Studio Express 2015. Zakończyłem denerwujące procesy za pomocą Menedżera zadań. Następnie usunąłem folder C: \ Program Files (x86) \ Common Files \ microsoft shared \ VsHub . Ta operacja rozwiązuje problem, ale wymaga uprawnień administratora.

xakepp35
źródło
38
Głos ode mnie „za”, ponieważ zespół DevTools naprawdę musi przestać ciągnąć te wszystkie irytujące bzdury w tle. Postępując zgodnie z radą, aby usunąć folder VsHub, ponieważ MS nie da mi czystego sposobu na odinstalowanie tego badziewia.
jerhewet
2
To zadziałało dla mnie, usunąłem ten folder i VsHub nie działa już w menedżerze zadań. Chociaż nie oznaczę tego jako rozwiązania tego pytania, jestem pewien, że istnieje czystszy sposób na wyłączenie VsHub.
Reda Lahdili
18
Znalazłem bardziej lojalne rozwiązanie. Zmień nazwę folderu VsHub na _VsHub zamiast usuwania. Ma to tę zaletę, że
cofasz
4
Podczas debugowania nie działają narzędzia diagnostyczne, które pokazują bieżący podgląd użycia procesora i pamięci w trakcie procesu.
Frederik
4
Wpadłem na kłopoty z VsHub i HttpHostx64, kiedy próbowałem zmienić stary plik linq na sql projektanta w starym projekcie. Po otwarciu projektanta VS blokował się i nie odpowiadał. Procmon wykazał dużą aktywność z HttpHostx64.exe. Zmieniłem nazwę folderu c: \ Program Files (x86) \ Common Files \ Microsoft Shared \ VsHub \ na „VsHub (bzdury)”. Mój projektant linq-to-sql ładuje się teraz normalnie. :)
Nick
30

Jak wspomniał xakepp35, możesz usunąć folder C: \ Program Files (x86) \ Common Files \ microsoft shared \ VsHub . Podejrzewam jednak, że aktualizacje lub inne instalatory prawdopodobnie spróbują je odtworzyć.

To, co zrobiłem, zamknęło wszystkie procesy VS. Przejmij na własność folder (jako administrator), a następnie RAR (ZIP) w górę folderu i ostatecznie go usuń (RAR jako kopia zapasowa, jeśli potrzebuję plików z powrotem). Mój jest na dysku SSD, więc chcę zaoszczędzić miejsce. W przeciwnym razie możesz po prostu zmienić jego nazwę i pozostawić na miejscu.

Następnie, aby zapobiec ponownemu utworzeniu, użyłem starej sztuczki z Win 3.1. Utwórz plik tekstowy o nazwie VsHub.txt w folderze udostępnionym C: \ Program Files (x86) \ Common Files \ Microsoft . Następnie zmień nazwę pliku tekstowego i usuń rozszerzenie .txt, pozostawiając plik o nazwie VsHub . Ponieważ system operacyjny nie może utworzyć folderu i pliku o tej samej nazwie w tej samej lokalizacji, poof, jest on niedostępny jako folder dla VS, a także jego niedostępne i przyszłe instalatory / aktualizatory jako folder. Jeśli chcesz ponownie zezwolić na dostęp w przyszłości, po prostu dodaj plik .txt z powrotem do pliku i gotowe.

Wolfie
źródło
8
To zaproponowane rozwiązanie zadziałało dla mnie idealnie. Wyeliminowało to zalew żądań vshub w Fiddlerze, a ogólna wydajność VS została znacznie poprawiona. Microsoft, jeśli czytasz: mniej znaczy więcej - nadużywanie to najgorsza rzecz, na jaką można pozwolić oprogramowaniu produktywności.
Shaun
Aby upewnić się, że nikt nie wpadnie na żadne szalone pomysły dotyczące usunięcia tego pliku, aby umożliwić utworzenie katalogu, możesz dodać do niego listę ACL z zakładki / właściwości / zabezpieczenia prawym przyciskiem myszy, która nie robi nic poza odmową wszystkim usunięcia uprawnień do pliku .
dgnuff
Postępowałem zgodnie z tą wskazówką i uzyskałem niesamowitą prędkość. Mój komputer jest podatny na kolejkowanie dysków, co czasami oznacza, że ​​ekran powitalny programu Visual Studio jest wyświetlany przez 5 minut (bez przesady). Wielkie dzięki za to.
S Meaden
22

Wygląda na to, że jest to szwajcarski scyzoryk do komunikacji dla studia wizualnego, zgodnie z odpowiedzią @ sraboy. Jest używany podczas debugowania do wyświetlania informacji o wydajności uruchomionego procesu, ale także do wysyłania telemetrii do firmy Microsoft na temat projektu, nad którym pracujesz. Możesz dobrze budować i przechodzić przez kod, gdy jest on wyłączony (na pierwszy rzut oka).

Usunięcie, zmiana nazwy lub zablokowanie tworzenia procesu vshub za pomocą AV zepsuje śledzenie wydajności, o którym wspomniałem. Utrata vshub zwiększa prywatność podczas korzystania z programu Visual Studio, ponieważ komunikuje się on z vortex.data.microsoft.com, przekazując informacje, takie jak identyfikatory GUID rozwiązania i projektu, wraz z identyfikatorem konta. Poniżej znajduje się zrzut ekranu z Fiddlera przechwytującego dane HTTPS.

Blokowanie dostępu na poziomie sieci pomaga zachować prywatność, ale nie rozwiązuje problemu z wykorzystaniem zasobów. Uznałbym to za normalne obciążenie związane z uruchomieniem programu Visual Studio.

W twoim przypadku prawdopodobnie możesz uciec z jakąś formą wyłączenia (blokowanie instancji za pomocą oprogramowania antywirusowego jest prawdopodobnie najczystszym podejściem), ale może obsługiwać dodatkowe funkcje, których jeszcze nie rozgryzłem.

Dane przekazane firmie Microsoft za pośrednictwem usługi vshub

Frederik
źródło
8

Dla tych z Was, którzy chcą zachować VSHub i nadal mogą korzystać z Fiddlera, można skonfigurować filtr w Fiddlerze z następującym ustawieniem:

Request Headers > Hide if URL contains =
REGEX:localhost:\d+\/vshub\/

EDYTUJ - prawdopodobnie też chcesz to dodać:

Hosts > Show only the following Hosts: =
localhost;

w celu pominięcia vortex.data.microsoft.comitp. żądań

vshub w programie Fiddler

Ilan
źródło
4

Według menedżera programu firmy Microsoft komentującego blog programu Visual Studio, komentującego blog programu Visual Studio , jest on używany do obsługi komunikacji z wieloma narzędziami w całym pakiecie VS. Biorąc pod uwagę, jak skomplikowany jest Visual Studio, nie polecałbym niczego tak surowego, jak odpowiedź xakepp35 (usunięcie jej).

Na moim Win10 x64 z uruchomionym VS2015 podczas debugowania są trzy procesy, a całkowite użycie pamięci RAM jest mniejsze niż 150 MB. O ile nie rzucasz stronami na maszynie z minimalną pamięcią RAM, nie ma się czym martwić. Biorąc pod uwagę, że używasz VS2015, przypuszczam, że masz 150 MB wolnego miejsca.

Do czasu, gdy znajdziesz dokumentację wyraźnie pokazującą, co obsługuje Hub, zalecam pozostawienie tego. Z mojego doświadczenia wynika, że ​​instalacje Visual Studio są zbyt łatwe do przerwania.

soja
źródło
3
Na moim komputerze po całym dniu pracy ten program zajmuje 580MB. Nawet po zamknięciu VS2015 ten program się nie zatrzymuje. Myślę, że to dość dużo pamięci RAM dla programu obsługującego funkcje (chmura, aktualizacje), których nie używam.
0xBADF00D
Wydaje się, że zależy to również od wielkości twojego rozwiązania.
Ed DeGagne
1
Cóż, problem polega na tym, że po prostu rośnie bez granic. Dopiero wczoraj zainstalowałem 2015, a dziś rano miałem do zbadania zagadkę 7 GB. Po prostu głupie. Wyłączone narzędzia diagnostyczne.
Nick Westgate,
3

Jednym z powodów, dla których program Visual Studio próbuje połączyć się w trybie online, wydaje się również to, że domyślnie wyszukuje w Internecie aktualizacje programu Visual Studio i jego rozszerzeń.

Ponadto program Visual Studio zawiera w swoim rdzeniu wersję przeglądarki Internet Explorer, dzięki czemu stronę internetową (i rozszerzenie) można pobrać na żywo. Innymi słowy, działa również jako przeglądarka i jak wszyscy wiemy ... Microsoft bardzo chętnie sprawdza dane swoich użytkowników i wykorzystanie swojego oprogramowania.

W menu NarzędziaOpcje dostępnych jest wiele funkcji online . (Szczerze mówiąc, wolę MonoDevelop nawet z jego wadami.)

user3345048
źródło
2
Niedawno przeszedłem na Sublime Text, nie mogę nadążyć za spowalnianiem mojego komputera przez VS.
Reda Lahdili
1
Zamierzamy przekonwertować wszystkie nasze usługi internetowe oparte na .NET na Javę, ponieważ narzędzia Microsoftu są po prostu okropne.
zmiażdż
2

Jest potrzebne do BrowserLink, okna Diagnostics, Intellitrace.

Czasami potrzebuję tych funkcji, ale mam tylko 8 GB pamięci RAM. Zwykle używam 90-95%, więc utworzyłem plik wsadowy, aby włączać i wyłączać VSHub, zmieniając nazwę folderu i tworząc dowiązanie symboliczne do pustego folderu z fikcyjnymi plikami.

Zamknij program Visual Studio przed uruchomieniem.

@echo off
goto CheckVsHubRunning

:KillVsHub
    echo Killing VsHub Process
    taskkill /IM VsHub.exe /T /F
    TIMEOUT /T 3 /NOBREAK
:CheckVsHubRunning
    ver > nul
    tasklist /FI "IMAGENAME eq VsHub.exe" | find /I /N "VsHub.exe"
    if "%ERRORLEVEL%"=="0" goto KillVsHub
    if "%ERRORLEVEL%"=="1" echo VsHub is not running.
    echo.

PUSHD "C:\Program Files (x86)\Common Files\microsoft shared"
    IF NOT EXIST "VsHub.original" (
        echo Renaming Original VsHub folder.
        RENAME "VsHub" "VsHub.original"
    )
    IF NOT EXIST "VsHub.dummy" (
        echo Creating Dummy Folder and Contents
        mkdir       "VsHub.dummy"
        copy NUL >  "VsHub.dummy\1.0.0.0"
        copy NUL >  "VsHub.dummy\ServiceModules"
        mkdir       "VsHub.dummy\dummy"
    )

    IF EXIST "VsHub\dummy" (
        echo ENABLING VsHub
        echo.
        rmdir       VsHub
        mklink /d   VsHub   VsHub.original

    ) ELSE (
        echo DISABLING VsHub
        echo.
        rmdir       VsHub
        mklink /d   VsHub   VsHub.dummy
    )
echo.
pause

Na moim komputerze VSHub i jego kumple zwykle używają:

  • VsHub.exe: początkowo 50 MB. 250-350 MB po ponad 2 godz
  • Microsoft.VsHub.Server.HttpHost.exe: początkowo 200 MB. 350 + MB po 1+ godz
  • Microsoft.VsHub.Server.HttpHostx64.exe: początkowo 320 MB. 550 + MB po 1+ godz

Zwalnia to ponad 1 GB pamięci RAM i prawie nie traci żadnej funkcjonalności.

Derek Ziemba
źródło
0

Nazwę „VsHub” należy zmienić na „SmartMobileCloud”; taki jest głupiTrendy. Wyrzuciłem to; moja edycja / debugowanie VisualC nie została uszkodzona.

Po zainstalowaniu VisualStudio usuń nieużywane rozszerzenia, wykonaj poprawkę „C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ - Deleted - VsHub” ... i umieść tam plik tekstowy „VsHub” (bez „.TXT” ), więc nic nie może odtworzyć folderu.

Jeff Relf
źródło