我有一个用 PHP 编写的 Facebook 应用程序。它每分钟的页面浏览量为 150 次,到今年年底,每分钟的页面浏览量将高达 300 次。在获得更多 PV 的同时,我开始遇到可扩展性问题,因此我想请教您如何扩展以成功处理 300 PV / 分钟的建议。
我的应用程序是一个类似测验的应用程序,它托管在可以使用的 VPS 上:
- 100% 的单核 2,6 GHz 处理器
- 500 MB,最多 2 GB RAM(cat /proc/user_beancounters 说我真的有 privvmpages = 500 MB,free -m 显示 2 GB)
我的 VPS 配置如下:
- Centos 5
- 轻量级
- 内存缓存
- 装甲运兵车
- MySQL
- PHP 使用 FastCGI
上个月,我使用互联网上提供的一些教程完成了对 MySQL、Lighttpd 和 PHP 配置的优化。我已经设法广泛使用 Memcached,因此许多请求下降到 1 毫秒,而那些未被 memcache 处理的请求最多需要 300 毫秒。我已经为 MySQL 添加了良好的索引,因此它不在用户的范围内。
一段时间以来,上述优化足以处理新请求,但最近由于应用程序的日益普及,我注意到一些请求需要超过 3 秒的时间,并且在关键爆发时,我的 Lighttpd 只是说 f*** 你和用户得到内部服务器错误 500。
我已经设法找到(我今天肯定会知道)通过设置来修复错误 500 的解决方案:
"PHP_FCGI_MAX_REQUESTS" => "500"
但是可扩展性问题仍然没有解决。我需要能够处理比现在多 2 倍的请求。我认为如何做到这一点。以下是我今天提出的解决方案:
- 在 2 个内核上将 VPS 升级到 3,3 GHz
- 购买另一个 VPS 并将数据库移到那里
- 向某人寻求帮助(我现在这样做)
我可以在我的 VPS 分销商处购买一个更大的计划,它有 3,3 Ghz 代替我现在拥有的 2,6 Ghz,并且在 2 个内核上不是一个内核。这将需要更多的钱,但它可以帮助我吗?如何计算它是否可以处理 300 PV?
我的第二个想法是购买另一个 VPS 并将数据库移动到那里。它应该为 FastCGI 进程和数据库进程提供 CPU 和内存增益。但是如何知道是否最好生成另一台服务器或为此购买更大的计划?
所以我进入了 3 点——问某人。所以我在这里 - 一个程序员,而不是管理员,有一个非常大的可扩展性问题并寻求你的帮助。
我想知道如何计算我当前的 VPS 可以处理的每分钟多少 PV - 这将帮助我做出决定。因为如果 300 PV 超出了我目前的 VPS 能力 - 我可以立即考虑其他解决方案,而不是更多地搞乱配置。
其次 - 如果我的 VPS 有可能处理更多请求 - 这是配置问题 - 我需要在这个问题上有更多知识的人的帮助来帮助我正确设置配置。我可以在此处提供此配置或通过电子邮件发送某人,并希望您有时间和知识来帮助我。我没有时间在这件事上做更多的实验。
最后 - 如果它超出了我的 VPS 能力,我想知道你如何决定我应该升级我的 VPS 还是生成另一台服务器?对于 300 PV 目标,哪种解决方案会更好?
如果您提出我的问题,非常感谢您提前提出问题。您的帮助、建议或与可以在此问题上提供帮助的人的联系对我来说非常有帮助!