我一直希望找出不同的服务器设置在理论上等同于并发页面请求,答案似乎总是浸泡在巫毒教和巫术中。以下设置的最大并发页面请求数的近似值是多少?
Apache + PHP+MySQL(1 服务器)
Apache + PHP + MySQL + Caching(如memcached或类似的(仍然是一台服务器))
apache+php+mysql+缓存+专用数据库服务器(2台服务器)
apache+php+mysql+caching+dedicatedDB+loadbalancing(multi webserver/single dbserver)
apache+php+mysql+caching+dedicatedDB+loadbalancing(multi webserver/multi dbserver)
+分布式(亚马逊云弹性) - 我知道这个是"你能负担得起的",但很高兴知道什么时候迁移到它。
我感谢任何建设性的批评,我只是想弄清楚什么时候从一个实现转移到下一个实现,因为它们每个人都有自己的实现壮举,无论是编程明智还是设置明智。
在你的问题中,你谈到了缓存,这可能是Web架构中最重要的因素之一。
Memcache 很有用,但实际上,在此之前,您应该确保服务器响应上有正确的 HTTP 缓存指令。这做了两件事;它减少了请求的数量并加快了服务器响应时间(如果您正确配置了 Apache)。这也可以通过使用像Varnish和CDN这样的HTTP加速器来改进。
另一个需要考虑的因素是您的系统是否为无状态。无状态通常意味着它不会在服务器上存储会话并在每个请求中引用它们。一个好的系统架构尽可能少地依赖于状态。状态越少,系统的水平可扩展性就越强。大多数人在面临个性化问题时都会引入状态 - 即为不同的用户提供不同的内容。在这种情况下,您应该首先调查使用HTML5会话存储(即将完整的用户数据存储在客户端上的javascript中,显然是通过https),或者数据集是否较小,安全的javascript cookie。这样,您仍然可以提供缓存的资源,然后在客户端上使用javascript进行个性化设置。
最后,您的堆栈包括数据库层,这是性能和容量的另一个潜在瓶颈。如果您只是从系统中读取数据,那么水平扩展应该很容易。如果有读取和写入,通常最好将读写数据集分离到单独的数据库中,并在另一个数据库中仅具有读取。然后,可以使用更相关的方法来缩放。
这些设置不会吐出一个答案,然后您可以相互比较。答案会因比您列出的更多因素而异。
即使他们确实吐出了一个答案,也只是几十个指标中的一个。是什么使这成为最重要的指标?
更糟糕的是,这些替代方案中的每一个都不是免费的。其中每个都有工程工作和维护开销。如果不了解您的组织、应用和成本/收入结构,就无法对其进行分析。
像AWS这样的选项不仅涉及开发工作,而且可能会将您"锁定"在解决方案中,因此您还需要意识到这一点。
我知道这个回答是不完整的,但我指出,这个问题涉及一个不能简化为单一指标的大复杂领域。
我怀疑你从错误的一端接近这一点。不要去寻找技术,然后弄清楚如何使用它们。相反,分析你的应用(测量,测量,测量),找出你遇到的实际问题,然后只解决那个问题。
如果您了解问题并且了解技术选项,那么您应该有一个答案。
如果您已经这样做并且问题是并发页面请求,那么我提前道歉,但我怀疑不是。