繁体   English   中英

MySQL查询时间出现怪异峰值

[英]Weird spikes in MySQL query times

我正在为游戏服务器(玩家信息,savedata,内容)运行带有MySQL(InnoDB)的NodeJS。 服务器基于HTTP(S),因此没有实时性。

从下面的图表中可以看到,我出现了这些怪异的峰值(第一个图表是请求/秒,最后一个图表是查询/秒)

在响应时间图上,您可以看到紫色的最大响应时间和蓝色的平均响应时间。 即使出现了10-20k的峰值,平均请求仍会保持在50-100ms,95%的请求也是如此。

我一直在研究,发现慢查询没什么特别的。 通常使用savedata(〜2kb的blob)更新查询或更新播放器配置文件,例如用户名等。 没有联接或类似的东西。 我们正在谈论少于10万行的表。

服务器在具有MySQL 5.7的Ubuntu 14.04上的Azure中使用4个内核和7GB RAM运行。

服务器监视器的东西

MySQL设置:

innodb_buffer_pool_size=4G
innodb_log_file_size=1G
innodb_buffer_pool_instances=4
innodb_log_buffer_size=4M
query_cache_type=0
tmp_table_size=64M
max_heap_table_size=64M
sort_buffer_size=32M
wait_timeout=300
interactive_timeout=300
innodb_file_per_table=ON

编辑:原来问题不是SQL查询之前的MySQL性能而是Node.js性能。 更多信息在这里: Node.js multer和body-parser有时非常慢

检查您的交换能力(假设是0台mysql机器,以最大化ram使用率):

> sysctl -A|grep swap
vm.swappiness = 0

只有7G的RAM和4G的缓冲池,如果swappiness不为零,您的计算机将进行交换。

您可以发布交换图和使用的内存吗? 对于7G内存,4G缓冲区“处于边缘”。 对于8G内存,我会给3G,因为您在其他所有mysql wise上的+ 1G以及在OS上的2G。

另外,您有1G的事务日志文件,我假设您有两个日志文件。 您有这么大的文件写这么多吗? 您可以使用此指南: https : //www.percona.com/blog/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM