MySQL放大或缩小?

问题描述:

我的任务是调查内部Web应用程序出现性能问题的原因。MySQL放大或缩小?

Web应用程序本身是用PHP编写的,部分是用Perl编写的,而且我们有一个MySQL数据库,这是我认为性能命中源正在发生的地方。

我们有大约400个系统的用户,其中大部分用户分布在不同的时区,所以一般情况下,任何时候最多只能有30个用户在线。性能问题已经在我们身上蹒跚而行,特别是在数据库不断增长的过去一年。

该系统运行在一台32位debian服务器上 - 6GB RAM,带有8个2.4GHz Intel CPU。这对于手头的工作可能不够重要。但是,即使在我是唯一在线用户的情况下,页面加载时间仍然可能很慢。

我试图确定是否需要放大或缩小。首先,我想知道我们的硬件如何处理对它的要求。其次,是否值得扩展并创建一些复制从服务器来平衡负载。

在互联网上有很多工具可用 - 可能有点太多调查。任何人都可以推荐任何工具,可以提供一些分析/性能监测,可以帮助我在我的追求。

非常感谢, NS

+1

不可否认,我对Debian几乎一无所知,但是不应该使用64位操作系统来使用超过4 GB或RAM? – 2012-04-04 18:23:35

+0

我认为这取决于它是否是启用PAE的内核。 – nnichols 2012-04-04 18:46:28

你的减速似乎与数据有关而不是数字的并发用户

适当索引的查询往往会随着数据量的对数扩展 - 也就是说,数据翻倍会使查询时间增加一些常量C,再次由同一个C重复数据,再次由相同的C等重复一次。 ...在你知道它之前,你有大量的数据,但你的查询只是一个较慢。

如果slow-d在你的情况下,你自己并不是渐进的(即它与数据量成线性关系,或者更糟),这可能表明查询效果不佳。在这个问题投入更多铁将推迟,但除非你有无限的预算,你必须在某个时候以实际解决的根本原因:

  1. 措施上的实际数据的查询性能,以确定慢查询。
  2. 检查可能改进的执行计划。
  3. 如有必要,请了解indexing, clustering, covering和其他表演技巧。
  4. 最后,将这些知识应用于您在步骤(1)和(2)中确定的查询。

如果没有其他的帮助,想想你的数据模型。有时,一个“完美”的规范化模型并不是最好的模型,因此可能需要一点司法的非规范化。

,如果你有预算仅仅是扔它一些更多的铁易(懒惰)的方式。

更好的方法是,在决定在哪里或如何扩展之前,将确定瓶颈。每页加载速度都很慢吗?或只是特定的网页?如果只是几页,那么投资一个分析器(对于PHP来说,xDebug和Zend Debugger都可以执行分析)。我也会(如果你还没有)投资一个尽可能与实时系统类似的测试系统来运行诊断。

你也可以看看收集一些统计数据;无论是在服务器级别的程序,如sar(from the sysstat package,也在数据库级别(你是否运行了慢速查询日志?)。

+3

是的,如果只有一个用户速度很慢,缩放并不是问题。修复性能是。 – ceejayoz 2012-04-04 17:19:12

+0

感谢您的输入。我们在过去的一两年中使用过sar,但它并没有特别向我们介绍MySQL的性能。 我会研究一些你的建议并回复你。 非常感谢, – nonshatter 2012-04-04 19:57:59