# 每台服务器将 PHP 扩展到 30,000 个并发用户的 5 条 Rockin'Tips

> 原文： [http://highscalability.com/blog/2013/7/3/5-rockin-tips-for-scaling-php-to-30000-concurrent-users-per.html](http://highscalability.com/blog/2013/7/3/5-rockin-tips-for-scaling-php-to-30000-concurrent-users-per.html)

![](img/f566686494a57f3d41c1c50751d6f818.png)

[众筹公司 RockThePost.com 的首席技术官 Jonathan Block](http://www.linkedin.com/pub/jonathan-block/57/a70/b02) 为较小的站点编写了一套不错的技巧，以帮助他们了解如何使用 一个小的两人开发团队。

他们的服务具有典型的小规模结构：

*   PHP 的 Zend Framework 2
*   两个用于 Web 服务器的 m1.medium
*   ELB 拆分负载
*   主/从 MySQL 数据库
*   围攻进行负载测试

每个 Web 服务器可以处理 30,000 个并发用户的非常明智的技巧：

*   **使用 PHP 的 APC 功能**。 APC 是操作码缓存，“ 确实是一个要求，以便网站有机会表现良好。”
*   **将不是.php 请求的所有内容放在 CDN** 上。 不要从您的 Web 服务器提供静态文件。 他们将所有内容放到 S3 上，并使用 CloudFront 作为 CDN。 最近的 CloudFront 问题导致它们直接从 S3 服务。
*   **不要使用 PHP 代码**与其他服务器建立连接。 与其他服务器建立连接会阻塞服务器并减慢处理速度。 使用 APC 键/值存储区进行数据存储，使用 Varnish 缓存整页。
*   **使用清漆**。 在负载测试下，使用清漆法师对其性能的最大不同。
*   **使用 c1.xlarge** 。 c1.xlarge 具有 8 个 CPU，在负载下确实有帮助。 m1.medium 只有 1 个 CPU 用于处理请求。

非常简单，但很好的建议。 [的原始文章](https://coderwall.com/p/__z9ia)具有更多详细信息，非常值得阅读。

有趣。 去表明我们落后了多远。 我们当前的应用程序大约有 6 个 c1.xlarge 和 10 个 fm.medium 服务器。 它运行缓慢，大约有 100 个用户。 将阅读全文。

但这只是外部站点。 原始文章指出，一旦用户登录到“内部”网站，每个服务器只能处理 1,000 个？ 那不是很多。

耶勒特，

您的网站是什么？

乔恩

我很震惊，没有看到本文中提到的 PHP-FPM。 事实是否真的如此，以至每个人都认为它已被使用，或者（更可能提到 APC）它被完全忽略了吗？ 即使在 Apache 中，PHP-FPM 的性能优势也令人惊讶，我确实希望所有 PHP 呈现的文件的性能都能提高 2 倍，而无需进行任何其他更改。

这篇文章关于将站点扩展到 30,000，而不是关于 PHP 扩展。 PHP-FPM 在一台服务器上每秒可处理 350-400 个最大请求

“不要在 PHP 代码中与其他服务器建立连接。
与其他服务器建立连接会阻塞服务器并减慢处理速度。请使用 APC 密钥/值存储来存储数据，并使用 Varnish 来缓存整个页面。”

逻辑页面始终需要连接到后端，例如数据库，内存缓存或其他后端服务，
缓存是提高性能的好方法，

但是您怎么可能在没有后端的情况下提供页面？ 许多 Web 应用程序远非一个简单的页面。 嗯，我不明白。 有人可以解释吗？

@reeze：可能是静态页面！