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