【问题标题】:ER_CANT_CREATE_THREAD: Error: Can't create a new thread mysql running inside a dockerER_CANT_CREATE_THREAD:错误:无法创建在 docker 内运行的新线程 mysql
【发布时间】:2021-09-09 15:13:11
【问题描述】:

在增加从应用程序到 MySQL 40000 的池连接总数时收到此错误 ER_CANT_CREATE_THREAD。

MySQL conf 文件如下所示

innodb_buffer_pool_size=100G  # from 128M to use half of your RAM for data/index storage
innodb_buffer_pool_instances=32  # from 1 to reduce mutex contention
innodb_lru_scan_depth=1024  # from 1024 to conserve 90% of CPU cycles used for function
max_connections=65536
max_prepared_stmt_count=204800
max_connect_errors=100000
thread_cache_size=8192
innodb_log_buffer_size = 256M
query_cache_size = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_thread_concurrency = 0
innodb_io_capacity = 2000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

【问题讨论】:

  • 您允许 Docker 拥有多少内存?其中许多设置非常高。
  • 我没有在 docker 上设置任何 RAM 分配。只在 mysqld conf 文件上设置....
  • 你的机器上至少有 128GB 的​​空间吗?
  • 是的机器是 128gb 内存
  • max_connections=65536 高得不合理,也许很危险。将其降低到 5000。

标签: mysql innodb pool


【解决方案1】:

max_connections=65536 高得不合理,也许很危险。将其降低到 100。

如果 90000 个连接同时活动,MySQL 将崩溃。最好避免太多的连接,而不是让它们相互绊倒。 (考虑一下,如果您让 10000 人同时进入一家杂货店会发生什么情况。交通会如此堵塞,以至于人们可能需要一个小时才能购买一件商品。)

如果您的 IoT 操作是快速连接-插入-断开连接,那应该只需要几毫秒。

如果连接非常顺利进入并且每个连接花费 10 毫秒经过,那么它们每分钟可以处理 90K,只需 max_connections=15

基准测试表明,MySQL 的瓶颈不会超过您拥有的 CPU 内核数量。

因此,将当前活动连接数限制为max_connections=100 应该是一个安全的折衷方案。

back_log 设置为更高的数字,可能是 1000。(我不知道什么是好的数字。)这个想法是 延迟 连接比让它进入更好, 只会被停止。

我相信 MySQL 可以每分钟处理 9 万次 IoT 插入,但前提是您接受此处的建议。

您提到了“连接池”。 100 和 1000 应该移回池化层。或者摆脱层。 (很难说哪个更好。)

【讨论】:

  • 90000 个请求中还有读取和更新以及插入命令
  • @santhosh - 如果 MySQL 可以在 10 毫秒内处理每个请求,并且如果 90 可以同时进行,那么所有 90K 可能会在 10 秒内完成。它更多的是关于“每秒事务”而不是“同时”。
【解决方案2】:

请将 innodb_read_io_threadsinnodb_write_io_threads 降低到 4。对于 docker 环境,应该增加这些变量。

如果您希望每个线程超过 4 个,请确保分配了足够的 RAM。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-12
    • 2010-11-04
    • 2013-09-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2016-01-13
    相关资源
    最近更新 更多