Jak přestat VPS přetěžovat VS Code: praktický návod
- Publikováno 14. 10. 2024
- IT, elektro
- Karel Marek
VS Code přes Remote-SSH je skvělý — pohodlně editujete přímo na serveru. Problém je, že součásti „na serveru“ (tzv. vscode-server
) mohou na slabším stroji spustit hodně procesů (file watcher, jazykové servery, rozšíření) a server se kvůli tomu přetěžuje. V tomto článku vysvětlím, proč se to děje a ukážu praktické kroky, jak zátěž zmírnit — od rychlé první pomoci až po trvalé omezení.
Co se na serveru děje
Když se připojíte z VS Code přes Remote-SSH, na serveru se spustí malý „server“, který zajišťuje:
- sledování souborů (file watcher) – reaguje na změny v souborovém systému,
- jazykové servery (Python, TypeScript, atd.) – poskytují vyhledávání, doplňování, lintování,
- extension host a další procesy rozšíření.
U velkých projektů nebo při špatném nastavení může sledování a jazykové servery výrazně zatěžovat CPU, paměť a diskové I/O. Výsledek: server se zpomalí nebo dokonce zamrzne.
Rychlá první pomoc
Pokud je server právě přetížený, můžete udělat toto:
- Připojte se přes SSH a najděte procesy VS Code:
ps aux | grep -i vscode
- Snižte prioritu hlavního procesu (nahraďte
<PID>
skutečným číslem procesu):
sudo renice +10 -p <PID>
sudo ionice -c3 -p <PID>
- Pokud chcete procesy okamžitě ukončit:
pkill -f vscode-server
Po tomto příkazu se VS Code při dalším připojení znovu nastartuje.
Trvalé řešení: konfigurace VS Code
Největší úsporu přinese nastavení VS Code tak, aby zbytečně neindexoval celé projekty a nespouštěl nepotřebné funkce. To se řeší v souboru settings.json
. Důležité jsou dvě úrovně:
- Globální nastavení (User/Machine) – platí pro všechny projekty. Obvykle se nachází v
~/.vscode-server/data/Machine/settings.json
. - Lokální nastavení projektu (Workspace) – soubor
./.vscode/settings.json
v konkrétním repozitáři, který přepíše globální nastavení.
Doporučené globální nastavení
Tento soubor radikálně sníží zátěž: vypne file watcher, omezí jazykové servery a zakáže automatické aktualizace rozšíření.
{
"files.watcherExclude": {
"**": true,
"**/node_modules/**": true,
"**/.git/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.cache/**": true
},
"git.enabled": false,
"git.autoRepositoryDetection": "openEditors",
"git.autofetch": false,
"git.confirmSync": false,
"search.exclude": {
"**/node_modules": true,
"**/.venv": true,
"**/venv": true,
"**/dist": true,
"**/build": true,
"**/.cache": true
},
"search.followSymlinks": false,
"python.analysis.indexing": false,
"python.analysis.autoImportCompletions": false,
"python.analysis.completeFunctionParens": false,
"typescript.tsserver.maxTsServerMemory": 256,
"typescript.tsserver.log": "off",
"typescript.disableAutomaticTypeAcquisition": true,
"javascript.suggest.autoImports": false,
"javascript.validate.enable": false,
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false,
"extensions.ignoreRecommendations": true,
"remote.SSH.useLocalServer": true,
"remote.SSH.remoteServerListenOnSocket": true,
"telemetry.telemetryLevel": "off",
"workbench.startupEditor": "none",
"files.simpleDialog.enable": true,
"files.autoSave": "off"
}
Co toto dělá:
files.watcherExclude
vypíná sledování změn v souborech (hlavní zdroj zátěže).git.enabled: false
zakáže náročné operace Gitu, pokud stačí používat Git z příkazové řádky.python.*
atypescript.*
nastavení omezují jazykové servery, které jinak hodně indexují.extensions.*
vypínají automatické aktualizace rozšíření a doporučení.remote.SSH.*
přesune část logiky na lokální počítač a sníží počet procesů na serveru.telemetry.telemetryLevel: off
zakáže sběr telemetrie.
Lokální nastavení pro vývojové projekty
Na vývojovém serveru můžete chtít mít víc funkcí (Git, částečný watcher, IntelliSense). To se řeší lokálním ./.vscode/settings.json
přímo v projektu. Typicky povolíte Git, necháte watcher fungovat jen na zdrojových složkách a zvýšíte paměť pro TypeScript.
{
"files.watcherExclude": {
"**/node_modules/**": true,
"**/.git/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.cache/**": true
},
"git.enabled": true,
"git.autofetch": false,
"typescript.tsserver.maxTsServerMemory": 512,
"javascript.suggest.autoImports": true,
"javascript.validate.enable": true
}
Tento soubor přepíše přísné globální nastavení pouze pro konkrétní projekt.
Proč někdy běží více serverů VS Code
Každé otevřené okno Remote-SSH = vlastní serverový proces. Pokud otevřete pět projektů, běží pět serverů. Navíc se po aktualizaci VS Code instalují nové verze serveru a staré procesy mohou zůstat viset. Pomůže:
- Zavřít nepotřebná okna VS Code.
- Ukončit staré procesy:
pkill -f vscode-server
- Odstranit staré verze:
rm -rf ~/.vscode-server/cli/servers/Stable-*
Shrnutí
- VS Code Remote-SSH může server přetížit hlavně kvůli file watcheru a jazykovým serverům.
- Rychlá pomoc je procesy zabít nebo snížit jejich prioritu.
- Trvalé řešení je správně nastavit
settings.json
. - Globální nastavení drží server v bezpečí, workspace nastavení umožní pohodlnější vývoj jen tam, kde je to potřeba.
- Vyplatí se pravidelně čistit staré verze
vscode-server
a mít otevřené jen tolik oken VS Code, kolik opravdu používáte.