mysql服务器负载过大导致应用程序宕机

siotufzp  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(317)

我们有一个2gb的digital ocean服务器,它专门用于其他两个php服务器的mysql服务器。我们在此服务器上使用的是percona mysql server 5.6。我们配置了mysql复制,这些配置工作正常
我们的问题是,有时我们的站点监控工具会报告此服务器承载的某些url已关闭(可能是一周或两周发生一次)。当我检查时,我可以看到mysql主服务器负载太高(可能是35-40),所以mysql服务器没有响应。@我通常做一个mysql服务重启,这个重启导致服务器负载变得正常,站点在服务重启后开始工作。
这是一个后端mysql数据库服务器,包含20-25个php应用程序(wordpress、drupal和一些自定义应用程序服务器)。
这是我的问题,
为什么在出现峰值后,服务器负载会自动下降?
是否有任何方式导致数据库出现问题?这样我也可以识别应用程序。
如何确定问题的根本原因

shyt4zoc

shyt4zoc1#

根据您的工作数据集,提供20-25个php应用程序(wordpress、drupal和一些定制应用程序服务器)访问的2gb服务器可能是一个问题。
例如,如果您有一个1.4gb缓冲池(假设所有表都是innNodeB)和10gb的数据,那么您的各种应用程序最终可能会争夺资源,例如i/o、缓冲池页、自适应哈希索引、查询缓存。假设使用了缓存,它们也可能在类似的时间范围内使itt缓存失效,从而向数据库发送昂贵的查询。
虽然50磅的负荷是你通常想要避免的,但平均负荷并不是你应该关心的,如果你单独出现的话。
不可中断状态的使用在linux内核中得到了发展,现在包括不可中断的锁原语。如果负载平均值是运行线程和等待线程(而不是严格意义上需要硬件资源的线程)的需求度量,那么它们仍然按照我们希望的方式工作。
http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html
如果问题每周发生一次,那么它听起来就像批处理,或者缓存过期问题—对于可用资源来说,一次发生的问题太多了。
最好的办法是监视并寻找原因。既然您已经在使用percona服务器,那么使用pmm应该可以让您非常清楚地找到原因,尽管它可以与oracle mysql、mariadb、aurora等一起使用。您可以通过演示来了解您可以获得的信息:https://pmmdemo.percona.com. 该软件是开源的,可以免费使用。
您可以在qan中查找最昂贵的查询,同时查看prometheus数据以了解主机本身。根据您对mysql的喜好,有一些建议可以让pmm发挥最大的作用。

相关问题