防止繁重的服务器查询重载Apache / Mysql

我有一些关于理解高服务器负载的问题,并且在Apache和MySQL和PHP 5等解决scheme的常见场景中实现某种types的负载平衡。

我在这个问题上很满意,并希望你的意见,因为我已经读了很多,我完全失去了可能的产品或技术,实施一个简单的,如果可能的话,免费的解决scheme:
需要关于负载平衡+一些技术问题的build议/意见!
https://blogs.oracle.com/oswald/entry/easy_http_load_balancing_with

想象一个简单的例子,只有一个服务器和两个用户同时连接, 用户A用户B.

上面的例子只是一个不真实的场景,一个坏的数据库表模式,以及一个可怕的查询,用来询问在这些情况下MySQL和Apache会发生什么。

我想知道他们是如何处理或解决这个问题的,怎样才能平衡负载,使MySQL和Apache服务器永远不会被单一用户的糟糕或缓慢的查询所束缚,同时他们仍然可以处理来自其他用户的其他查询。

如果我的问题在某些概念上是错误的,那么非常感谢你。 请随意添加任何提示,有用的书或您自己的经验与服务器和应用程序。

简短的回答:如果你想防止愚蠢的查询重载服务器,只是防止愚蠢的查询。

很长的回答:

正如你所提到的,负载平衡在具有大量独立查询的环境中效率更高。 一个大的,重的查询,将始终超载一台服务器。 但是,您可以通过设置配额来限制用户的发病率。 做一个关于Apache的search,或者回到这里获取更多信息。

但最好的解决scheme仍然是分析查询,并决定每个查询是否:

  1. 应该运行而不需要进一步的操作
  2. 应该跳过一个错误消息
  3. 它应该被发送到另一台服务器; 这是一种预测性的平衡

现在 ,我们可以更详细地帮助您,您可以与我们分享更多的细节,如数据库结构,查询types等等。 我们可以find一些algorithm来切换这三种情况。

正如你所说的Ninj,配额Apache模块可能是一个很好的select来限制每个用户的带宽。
如果他们有这些function将是非常有用的:

  • 设置最大和最小带宽以防止服务器过载。
  • 基于服务器负载自动检测服务器负载和每个用户的自动限制。 也许这个function更复杂,我不知道是否有任何Apache的这个function。

find这些Apache模块:

  • Apache mod bw
  • Apache mod节stream
  • Apache mod配额

替代mod_throttle

当然首先应该是防止用一个简单的查询来重载MySQL。 一个选项是设置配额,实现负载平衡,并检测和禁止不良或超载查询,如你所解释的。