我有一个运行在 Debian/Nginx/PHP5-FPM 堆栈上的复杂 Web 应用程序。该应用程序通常每次都有约 600 名在线用户,每天有约 5000 名独立用户。
该堆栈在基于 Xen 的 VM 上运行,该 VM 具有 2 个专用核心(Intel Xeon E5420)和 2GB RAM。
我发现 PHP5-FPM 占用了大量 CPU,通常为 10%-20%,但有时甚至几分钟内达到 100%。平均负载(来自 uptime 命令)为“~1.5、~2、~2.5”,但我见过更高的值(大约 10)。
我想知道虚拟机是否足够强大,可以运行此应用程序。更重要的是,我想知道使用 Xen 是否真的是个好选择(服务器上还有两个虚拟机)。
提前致谢!
答案1
从您提供的信息来看,您似乎已经到了极限。一个常见的经验法则是,平均负载超过 1 应该引起关注,如果达到 4 或 5,则肯定存在问题。负载来自等待资源(可能是磁盘、网络或 CPU)的进程数。而如果您看到 CPU 使用率达到最高(如果您的平均值为 15%)并且负载值高于 1,那么您的瓶颈很可能是磁盘访问。VPS 的性质是磁盘性能通常比专用服务器差很多,更强大的 VPS 可能具有相同的磁盘性能,因此没有帮助。
我不太了解您的应用程序,但从您给出的数字来看,您的设置似乎非常高效。我建议您考虑扩展并将工作拆分到两台或更多台服务器上,而不是扩展到更强大的机器。
最重要的是你要进行更多的测试以便确定。
回答你的问题 XEN 很好,有很多大型生产站点在使用它。但是,如果你有一个繁忙的数据库,这通常意味着大量的磁盘活动,那么 XEN 或虚拟化通常可能不是最好的解决方案。
答案2
Xen 在整个应用程序中对 CPU / 内存非常有利,但对 IO / 网络却不太有利(除非您使用直接连接 lun,如 NPIV 或任何绕过 dom0 io 堆栈的东西)
因此你需要对你的负载进行一些分析,尝试使用 vmstat / iostat 来确定它的 cpu / io 负载