首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MariaDB 10.4随机性能退化

MariaDB 10.4随机性能退化
EN

Stack Overflow用户
提问于 2020-08-25 12:41:32
回答 4查看 1.4K关注 0票数 1

我有一个具有这样参数的服务器:

  • 操作系统:Ubuntu18.04.4LTS x86_64
  • 宿主: X11DPi-N(T)
  • 内核:4.15.0-112-泛型
  • CPU: Intel Xeon Silver4214 (48) @ 2.201GHz
  • GPU: ASPEED技术公司ASPEED图形系列
  • 内存: 18552MiB / 96336MiB
  • SSD三星MZQLB960HAJR-00007 894.3G x2

安装了5.5.5-10.4.12-MariaDB-1:10.4.12+maria~bionic。在这个屏幕截图中显示了一个标准的DB加载:

所以我有大约400到500个每秒的选择(大部分来自不太大的有500 K记录的表),每秒100到190次更新,以及大约50-150个同时连接。

我的问题是:有时,由于没有明显的原因,服务器有2000-3000个打开的连接/进程。根据SHOW FULL PROCESSLIST,它们是标准的SQL请求,但具有“发送数据”状态,运行时间为400-500秒。当然,此时服务器冻结,无法正常工作。我说“没有明显的理由”,因为在这个时候,我没有看到任何增加的用户数量或在网站上的活动增加。此外,重新启动MariaDB服务或完全重新启动服务器有助于摆脱这种情况,但并不总是如此:有时,即使在重新启动之后,我也几乎立即获得了相同的2000-3000个冻结进程。

是否有人遇到过类似的数据库行为?如有任何意见,我将不胜感激。

UPD:

  1. 我所有的选择都只调用一个表(~500 k记录,没有JOIN和/或子查询),其中大部分都有LIMIT 1,所以数据量不大。
  2. 错误日志显示了很多这样的记录:2020-08-26 22:12:35 787380 [Warning] Aborted connection 787380 to db: ... (Got timeout reading communication packets)
  3. innodb_lock_wait_timeout为50 (默认)
  4. 缓慢的查询日志并没有显示一些不寻常的东西。
  5. 我的optimizer_switch设置:index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on
EN

Stack Overflow用户

回答已采纳

发布于 2020-09-08 02:11:03

解决方案非常简单:在研究了MariaDB文档(特别是本文https://mariadb.com/kb/en/thread-pool-in-mariadb/)之后,我在my.cnf中添加了以下内容,问题就消失了

代码语言:javascript
运行
复制
thread_handling=pool-of-threads
thread_pool_size=48 
#48 is a number of CPUs
票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63579091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档