我有一些关于理解高服务器负载的问题,并且在Apache和MySQL和PHP 5等解决scheme的常见场景中实现某种types的负载平衡。
我在这个问题上很满意,并希望你的意见,因为我已经读了很多,我完全失去了可能的产品或技术,实施一个简单的,如果可能的话,免费的解决scheme:
需要关于负载平衡+一些技术问题的build议/意见!
https://blogs.oracle.com/oswald/entry/easy_http_load_balancing_with
想象一个简单的例子,只有一个服务器和两个用户同时连接, 用户A和用户B.
用户A进行查询并要求input大量的数据,这个查询可能会在几分钟内超载MySQL服务器。 即:
SELECT * FROM'table_with_10GB_of_data';
用户B要求另一个小的快速查询,但MySQL服务器仍然忙于第一个查询。
上面的例子只是一个不真实的场景,一个坏的数据库表模式,以及一个可怕的查询,用来询问在这些情况下MySQL和Apache会发生什么。
我想知道他们是如何处理或解决这个问题的,怎样才能平衡负载,使MySQL和Apache服务器永远不会被单一用户的糟糕或缓慢的查询所束缚,同时他们仍然可以处理来自其他用户的其他查询。
如果我的问题在某些概念上是错误的,那么非常感谢你。 请随意添加任何提示,有用的书或您自己的经验与服务器和应用程序。
简短的回答:如果你想防止愚蠢的查询重载服务器,只是防止愚蠢的查询。
很长的回答:
正如你所提到的,负载平衡在具有大量独立查询的环境中效率更高。 一个大的,重的查询,将始终超载一台服务器。 但是,您可以通过设置配额来限制用户的发病率。 做一个关于Apache的search,或者回到这里获取更多信息。
但最好的解决scheme仍然是分析查询,并决定每个查询是否:
现在 ,我们可以更详细地帮助您,您可以与我们分享更多的细节,如数据库结构,查询types等等。 我们可以find一些algorithm来切换这三种情况。
正如你所说的Ninj,配额Apache模块可能是一个很好的select来限制每个用户的带宽。
如果他们有这些function将是非常有用的:
find这些Apache模块:
替代mod_throttle
当然首先应该是防止用一个简单的查询来重载MySQL。 一个选项是设置配额,实现负载平衡,并检测和禁止不良或超载查询,如你所解释的。