background image

扩展 PHP 的五个简单技巧,让单服务器并行支撑 30000 用户

摘要:两人小团队基于公司给 100 万个投资人同时发送电子邮件的业务需求,不得不弄
清单服务器并行支持的最大用户数目。而在这个过程中,他们总结了 5 个 PHP 扩展的小技
巧,让每个服务器可以同时支撑 3 万个用户。

Jonathan Block 于 RockThePost.com(集资公司)担任 CTO 一职,基于业务需求,公司需
要他们同时给 100 万个投资人发送电子邮件。对于只有两个人的工程团队,确定服务器可
以同时发送邮件的数目就成为了当务之急。

RockThePost.com 建立于 Ec2 的 LAMP 堆栈之上,非常典型的小规模构造:

1

PHP 的 Zend Framework 2

2

使用了 2 个 m1.medium

3

使用 ELB 分配负载

4

主/从 MySQL 数据库

5

使用 Siege 进行负载测试

在业务实现过程中,Block 对其中的秘诀做出了总结,让网络服务器可以同时给 3 万用户
并行发送邮件:

1. 使用 PHP 的 APC 特性。APC——Alternative PHP Cache

,虽然官方称为 可选 PHP

缓存 ,

但是称为 另一个 PHP

缓存也不为过 ,因为它可以切实的提升网站的性能。

2. 把所有不是.php 的请求都分配给 CDN(内容分发网络),不要使用你的服务器处理静
态文件。他们使用 S3 来存储所有,并使用 CloudFront 作为他们的 CDN。最近 CloudFront 出
现的一些问题迫使他们不得不直接使用 S3 服务。

3. 切勿将 PHP 代码里的链接指向其它的服务器。比如数据库以及 memcache 服务器,除非
是强制性的或者是没有其它方法实现你的目的。在执行流中让链接指向其它服务器是非常
没有效率的:可能会使服务器受到限制,从而降低处理的速度。使用 APC 键/值存储来储
存数据,并使用 Barnish 来缓存整个页面。

4. 使用 Varnish。一般情况下,站点上的所有网页都不会改变或者是不会做大型的改动 。
Varnish 就对于网络服务器缓存有着 Memcache/ModRewrite 的作用。同样在压力测试中,使