我最近买了Xen VPS(linode.com)使用 Debian 5.0 Lenny(i386),512MB 内存。目前,我只有三个小型网站(使用 Drupal 构建),每天大约有 600 名用户在这台服务器上运行。
作为 Web 服务器,我使用nginx 0.7.67(PHP 5.3.3和php-fpm)。平均内存消耗约为100-105MB。以下是 Munin 图表显示的内容:
这是“top”命令显示的内容(按内存使用情况排序):
在我的 php5-fpm.conf 中:
pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
在将一些较大的项目迁移到此 VPS 之前,我想知道对于这种服务器配置来说,这是否是正常的内存消耗?此 VPS 可以处理网站上的多少用户(假设使用 Zend Framework 构建)?
谢谢你!
答案1
对我来说这看起来不错。您的 PHP + MySQL 仅占用大约 100 兆字节的 RAM,为操作系统留下了大量空间。
对于您“这个 VPS 可以处理多少用户?”的问题:视情况而定。通过适当的缓存和其他最佳实践,我认为它每秒至少可以处理数十个请求,甚至更多。
如果内容高度动态且可缓存性不佳且数据库结构恰好很复杂和/或数据库很大,那么性能就会受到影响。
通常,每当您的流量增长时,内存将是您遇到的第一个限制,而对于高度动态的内容,CPU 也会受到折磨。
答案2
这不太好,你的 php5-fpm 进程占用大约 35Mo。使用此配置,你可能有 50 个进程(max_children = 50),每个进程分配 35Mo。因此,你只有 512Mo 的机器将进行交换。我认为你的限制是 10 个 php-fpm 进程(max_children = 10)。
答案3
Linode 棒极了!我唯一的建议是将 MySQL 移至单独的 512MB linode。这样做有很多好处,除非每月 20 美元会花光积蓄,否则没有坏处。
我的直觉告诉我你正在运行 debian 或 ubuntu。查看堆栈脚本库。有一个专门针对 linode 优化的 MySQL 服务器。然后将私有 IP(免费)添加到你的 file/nginx/php-fpm 服务器,并将私有 IP 添加到你的 db 服务器。所有数据都将在你的 linode 的 DC 的本地网络中传输。它速度很快,并且不计入你的每月带宽上限。
您甚至可以将“大型项目”站点放在同一个 nginx/php-fpm linode 上。随着流量的增加,您可以添加专用 memcached VPS、专用 PHP-FPM VPS,并根据需要在尽可能多的 20 美元 512MB linode 上进行水平扩展。
您的数据库将垂直扩展...因此,当它开始变得饥饿时,将其提升到下一个大小。
它能够处理多少取决于诸如缓存、干净的代码和每页加载的数据库调用数量等因素......将前端与数据库分离可以轻松实现“根据需要扩展”。
答案4
我也担心这个事实。我正在使用 Amazon EC2 虚拟服务器系统运行一个只有 613Mb“内存”的微型实例。从我们的测试中我可以说,它可以处理至少 50 个子进程同时运行,没有任何明显的问题。我无法解释这种行为,但可以告诉你它仍然有效。