我正在为游戏服务器(玩家信息,savedata,东西)运行带有MySQL(InnoDB)的NodeJS。服务器是基于HTTP(S)的,因此没有任何实时性。MySQL查询时间奇怪的尖峰
我有这些奇怪的尖峰,你可以从下面的图表中看到(第一个图表是请求/秒和最后一个图是查询/秒)
在响应时间图可以看到,最大的响应时间紫色和平均蓝色响应时间。即使那些平均值为10-20k的峰值平均停留在50-100ms,95%的请求也是如此。
我一直在挖掘,发现缓慢的查询是没有什么特别的。通常使用savedata(blob〜2kb)更新查询或修改像用户名等那样的播放器配置文件更新。没有加入或类似的东西。我们正在讨论小于100k行的表格。
服务器在Ubuntu 14.04上使用4核和7GB RAM的MySQL 5.7在Azure上运行。
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 and body-parser sometimes extremely slow
您是否也可以检查磁盘吞吐量?有时磁盘也可能很忙,可能会导致峰值。另外,如果这是写入繁重的系统,可能会有很多事情发生在后台,比如锁等待,死锁等等。这些也可能导致这种行为。 – Aruna
IO方面没有什么奇怪的事情发生。服务器运行的不是后端。 –
是否有任何小时cronjobs使用资源,它看起来像他们在固定的时间间隔?可能logrotation或什么 – verhie