我们有一个基于 MySQL 的应用程序,它对响应时间非常敏感。MySQL 存储过程需要平均在 10 毫秒内做出响应,可接受的最大响应时间为 50 毫秒。我们以优异的成绩达到了平均响应时间(大约 3 毫秒),但在 5 小时的负载测试中,我们会得到一些(约 50)个响应时间大于 50 毫秒的响应,最大响应时间有时高达 265 毫秒。
关于调整 MySQL 和 Linux 以获得最佳性能的信息有很多,我相信我们已经应用了大多数最佳实践,但我发现关于如何减少异常值发生率和减少最大响应时间的信息很少。
我如何诊断这些异常响应时间的原因以及我可以应用哪些 Linux 和 MySQL 调整来减少它们?
答案1
以下是一些关于mysql性能的技巧:
1-在用于选择查询的字段上创建索引以提高速度。
2-如果适用,则在同一张表中保留少量记录。
3-使用Myisam引擎,因为如果您不关心事务和外部键,它通常比Innodb更快。
4-优化您的查询。
5-如果适用,在专用服务器上运行 mysql,并关闭不需要的服务以节省服务器资源。
答案2
这里的偏差程度是多少?如果您满足平均 SLA,那么总会有一些三、四、五个标准偏差的异常值。您需要在 SLA 方面解决的问题是,您的最大值允许的异常程度是多少?
几年前,摩托罗拉曾推出过一则很棒的广告,其中谈到了六西格玛制造原理,并以高尔夫球手作为比喻,指出他们的缺陷水平相当于 100 年内打错一杆。这里的关键是,100 年内出现一次例外是允许的例外水平。从 1:100,000 升级到 1:1,000,000 的成本可能非常高,但回报却微乎其微。
您注意到 50 毫秒级别上发生了 50 次异常。这超出了总样本量???考虑到降低速率所需的成本,从业务角度来看,这种异常率是否可允许/可取?