在 VS Code 中通过 SSH 连接导致我的 Web 服务器崩溃

在 VS Code 中通过 SSH 连接导致我的 Web 服务器崩溃

我有一个托管的 Web 服务器,我想从 Visual Studio Code 通过 SSH 连接到它。我有一个全新安装的 Web 服务器,远程 SSH 实际上是它使用的唯一插件。

我已经创建了一个这样的 SSH 连接:

Host mywebserver.com
HostName mywebserver.com 
User username 
Port 123123

并成功连接。我很惊讶地看到,在建立连接时,VS Code 报告说它正在安装 VS Code 服务器,或类似的东西 - 我只是想通过 SSH 进入服务器,仅此而已。但是,我想也许 VS Code 需要在服务器上放一些“小东西”,所以我让它做它的工作。

最后,我终于可以登录并开始根据需要编辑文件了。一开始一切都很顺利,直到突然间,服务器开始抛出错误 500。经过调查,这是由于运行了大量进程造成的/home/myuser/.vscode-server/。事实上,这些进程太多了,超出了我的网站托管的进程数限制,从而导致了错误。

我已经确认,事实上,当我通过 SSH 连接时,它会创建很多线程,而我的托管服务提供商实际上将线程数限制为 50 个。这是我连接时立即发生的情况: https://pastebin.com/zH8uDqXu

我该如何避免这种情况?

答案1

所以结论是

  1. VSCode Remoting 服务器启动一些进程(不是很多,但仍然不止一个),但显示的“大量进程”top实际上是线程,因为大多数进程都是高度多线程的 Node JavaScript 运行时(在服务器端运行各种 VSCode 扩展)的副本,并且这 5 个以上的进程中的每一个都会产生自己的 5-10 个线程;

  2. cPanel 所称的“进程”实际上是线程(或者也许是 Linux‘任务’是两者的实际基础);

  3. 托管服务很可能基于 OpenVZ,并对每个客户的线程数设置了非常严格的限制 —— 刚好够实际的 Web 服务器守护进程和 Web 应用程序使用。

在这种情况下,我建议在另一台服务器上进行开发 - 最好是完整的基于 KVM 的 VPS,您可以独享整个操作系统。这些服务器比 OpenVZ 容器更昂贵(所有容器共享一个操作系统,这就是它们便宜的原因),但另一方面,您不需要像生产那样强大的服务器来进行开发。

因此,您无需直接入侵“实时”网站,而是可以远程访问私人 VPS 并在那里工作,然后使用 Git(或 SFTP)部署到主服务器。(不仅仅是因为线程;通过 Git 部署还意味着您将Git 首先会提交,当网站出现故障并且你需要快速恢复所有内容时,这是一件好事。)

相关内容