我是 Google Cloud Engine 的新手,正在尝试将我的托管转移到 Google Cloud 下的自管理 VM。
我已经使用 Ubuntu Linux 设置了虚拟机,选择了一些机器类型(开始时配置较低),配置了服务器上的所有内容(www、DB、Webmin、静态 IP),并将 DNS 重定向到此服务器,以便真实用户开始访问该网站。它似乎有效。
但服务器冻结了。也许几分钟或几小时后,它就完全挂了,所以我无法通过 SSH、Web 或 Webmin 连接。我必须重置 VM 才能继续。
当冻结时,Cloud Engine 显示 CPU 使用率约为 50%,并且无法通过其操作代理(GCE 工具)。我希望我始终可以通过 SSH 连接并检查有关失败原因的日志。但我不知道在哪里查看。
有人能建议如何调试此服务器设置,以便它始终可靠地工作,或者至少告诉我应该修复什么。
谢谢。
答案1
我同意 John Hanley 先生的观点。您可能需要考虑升级服务器实例或优化资源使用。
您还可以记录冻结的频率、任何错误消息或模式、服务器的最近更改以及触发冻结的特定操作。检查您的日志以查找有关原因的线索/var/log/syslog
,/var/log/kern.log
答案2
回答自己的问题:
我可能通过将 Apache 的 mpm_prefork 更改为 mpm_event 并对 php/cgi/php-fpm 等进行相关更改找到了修复方法。现在服务器运行时没有挂起,虽然由于零空闲工作者而导致我又有一个网站被阻止,但我仍然可以通过 SSH 连接并通过调整 mpm_event 的配置来解决问题。
因此问题可能在于使用默认的 mpm_prefork 和 mod_php 中可能存在的内存泄漏。带有 php 模块的默认 Apache 配置似乎不是最佳的,我不得不按照指南来启用 mpm_event 模块。
我甚至可以降低虚拟机规格 - 更少的 CPU、更少的内存,因为虚拟机仪表板显示它使用了约 40% 的 CPU 和约 30% 的内存,实际上它设置为 0.5-2 vCPU 和 2GB 内存,这已经足够了。在不了解问题原因的情况下增加资源并不能解决问题。