【问题标题】:Sleeping queries and slowness of MYSQLMYSQL的休眠查询和缓慢
【发布时间】:2022-10-20 20:10:05
【问题描述】:

我有一个用 Electron 构建的软件应用程序,每秒钟都有一个 Ajax 调用。 一切似乎都正常,但是服务器被砸坏了,我们正在经历严重的超载和缓慢。这些网站会很快,然后很慢,然后突然又很快,或者有时会继续旋转。我们有 8 个用户使用该应用程序,每秒产生 80 个查询。

这是我的cnf文件

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_allowed_packet = 64M
max_user_connections = 100
max_delayed_threads = 0
tmpdir = /tmp
wait_timeout = 300
read_buffer_size = 2M
read_rnd_buffer_size = 4M
myisam-recover-options = DEFAULT
myisam_sort_buffer_size = 128M
innodb_buffer_pool_size = 128M
innodb_log_buffer_size = 32M
innodb_data_home_dir = /var/lib/mysql/
innodb_file_per_table = 1
innodb_log_group_home_dir = /var/lib/mysql/
innodb_log_file_size = 16M
query_cache_type = 0
query_cache_size = 0
tmp_table_size = 64M
max_heap_table_size = 64M
table_definition_cache = 8192
table_open_cache = 16384
log-error = /var/log/mysql.error.log
log-warnings = 3

[mysql]
no-auto-rehash
default-character-set = utf8mb4

[mysqldump]
quick
max_allowed_packet = 32M

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

!include /etc/my.cnf.d/hwconf.conf

我不确定并且不知道我可以做些什么来避免这种情况,我与主机交谈,他们说有时会有一些睡眠查询,那里没有太多帮助。

【问题讨论】:

  • 怎么知道网站慢是mysql造成的?您是否考虑过用另一种解决方案替换轮询比秒,或者至少减少间隔?从编程的角度来看,您对我们有什么期望(请记住,这是 SO,而不是 DBA Q/A 网站!)?
  • 8 个用户每秒使用 ajax 请求对每个用户进行 8 次查询,而不是 80 次。 Quick Mafs
  • 额外的数据库信息请求,请。 RAM 大小、# 核心、MySQL 主机服务器上的任何 SSD 或 NVME 设备?在 justpaste.it 上发布 TEXT 数据并分享链接。从您的 SSH 登录根目录中,文本结果为:A) SELECT COUNT(*) FROM information_schema.tables; B) 显示全球状态;至少 24 小时正常运行时间后 C) 显示全局变量; D) 显示完整的处理程序; E) 状态;不显示状态,只是状态; G) 显示 ENGINE INNODB 状态; H) SELECT name, count FROM information_schema.innodb_metrics ORDER BY name;为服务器工作负载调优分析提供建议。
  • 在 justpaste.it 上发布 TEXT 数据并共享链接。其他非常有用的操作系统信息包括 - 请,htop 1st page,如果可用,TERMINATE,top -b -n 1 用于大多数活动的应用程序,top -b -n 1 -H 有关您的 mysql 线程内存和 cpu 使用情况的详细信息,ulimit - a 用于限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,df -h 用于已用 - 按设备的可用空间,df -i 用于按设备的 inode 信息,cat /proc/meminfo 包括 VMallocUused,用于服务器工作负载调优分析,提供性能改进建议。
  • 您每秒运行 80 次哪些查询?一个简单的查询是没有问题的。多个复杂的查询会使服务器陷入瘫痪。

标签: mysql


【解决方案1】:

按顺序做的事情:

  1. 使用 SHOW PROCESSLIST 检查进程列表,看看什么是慢的,也许这是显而易见的。如果速度很慢,您会看到查询。
  2. 检查慢查询日志。
  3. 使用 Percona Toolkit 或 JetProfiler 等工具放大从 1 或 2 不明显的任何问题。

【讨论】:

    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2017-03-21
    • 2011-03-07
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多