我有一个托管的 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
所以结论是
VSCode Remoting 服务器启动一些进程(不是很多,但仍然不止一个),但显示的“大量进程”
top
实际上是线程,因为大多数进程都是高度多线程的 Node JavaScript 运行时(在服务器端运行各种 VSCode 扩展)的副本,并且这 5 个以上的进程中的每一个都会产生自己的 5-10 个线程;cPanel 所称的“进程”实际上是线程(或者也许是 Linux‘任务’是两者的实际基础);
托管服务很可能基于 OpenVZ,并对每个客户的线程数设置了非常严格的限制 —— 刚好够实际的 Web 服务器守护进程和 Web 应用程序使用。
在这种情况下,我建议在另一台服务器上进行开发 - 最好是完整的基于 KVM 的 VPS,您可以独享整个操作系统。这些服务器比 OpenVZ 容器更昂贵(所有容器共享一个操作系统,这就是它们便宜的原因),但另一方面,您不需要像生产那样强大的服务器来进行开发。
因此,您无需直接入侵“实时”网站,而是可以远程访问私人 VPS 并在那里工作,然后使用 Git(或 SFTP)部署到主服务器。(不仅仅是因为线程;通过 Git 部署还意味着您将有Git 首先会提交,当网站出现故障并且你需要快速恢复所有内容时,这是一件好事。)