由于MySQL服务器负载过重导致应用程序出现问题

时间:2018-01-15 04:06:16

标签: mysql percona

我们有一个2GB的Digital Ocean服务器,它专用于其他两个PHP服务器的MySQL服务器。我们在这台服务器上使用Percona MySQL Server 5.6。我们配置了MySQL复制,这些配置工作正常

我们的问题是有时我们的网站监控工具报告此服务器托管的某些网址已关闭(可能会在一两周内发生一次)。当我检查时,我可以看到Mysql Master服务器负载太高(可能是35 - 40),因此MySQL服务器没有响应。 @我通常会重新启动MySQl服务,这次重启导致服务器负载正常,服务重启后网站开始工作。

这是一个20-25 PHP应用程序的后端MySQL数据库服务器(WordPress,Drupal和一些自定义应用程序服务器)。

以下是我的问题,

  1. 在发生尖峰后,为什么此服务器负载会自动降低?
  2. 数据库导致问题有什么方法吗?这样我也可以识别应用程序。
  3. 如何确定此问题的根本原因

1 个答案:

答案 0 :(得分:0)

根据您的工作数据集,可能会出现一个2GB服务器,可以访问20-25个PHP应用程序(WordPress,Drupal和一些自定义应用程序服务器)。

例如,如果你有一个1.4GB的缓冲池(假设所有表都是InnnoDB)和10GB的数据,那么你的各种应用程序最终可能会竞争资源,例如I / O,缓冲池页面,自适应哈希索引,查询缓存。假设使用缓存,他们还可以在相似的时间范围内使缓存无效,从而向数据库发送昂贵的查询。

虽然50通常是你想要避免的负载,但如果单独显示,平均负载并不是你应该关心的。

  

Linux中不断使用不间断状态   内核,现在包括不间断的锁原语。如果   负载平均值是在运行和等待方面的需求量度   然后,线程(而不是严格的线程需要硬件资源)   他们仍然按照我们希望的方式工作。

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

如果问题每周发生一次,那么它开始听起来像批处理过程或缓存过期问题 - 对于可用资源而言,一次又发生了太多事情。

最好的办法是监控和寻找原因。由于您已经在使用Percona Server,因此使用PMM可以为您提供找到原因的完美见解,尽管它可以与Oracle MySQL,MariaDB,Aurora等一起使用。您可以尝试一个演示来查看您可以获得的见解获得: https://pmmdemo.percona.com。该软件是开源的,可以免费使用。

您可以查看QAN查找最昂贵的查询,同时查看Prometheus数据,以深入了解主机本身。有some recommendations可以从PMM中获得最大收益,具体取决于您的MySQL风格。