返回顶部
首页 > 资讯 > 数据库 >Thread pool参数引起的程序连接数据库响应慢
  • 653
分享到

Thread pool参数引起的程序连接数据库响应慢

2024-04-02 19:04:59 653人浏览 安东尼
摘要

数据库版本:percona-Mysql 5.6.16 在很长一段时间,都会出现程序连接数据库,出现响应慢的情况,正常在几到几十毫秒之间,但是偶尔会出现上百毫秒的情况; 开始由于开发重新设置并调整过程序连

数据库版本:percona-Mysql 5.6.16

在很长一段时间,都会出现程序连接数据库,出现响应慢的情况,正常在几到几十毫秒之间,但是偶尔会出现上百毫秒的情况;

开始由于开发重新设置并调整过程序连接池,一直怀疑是连接池的问题,但是问题依旧;


因为使用的版本是percona-mysql 5.6.16 并且使用了数据库连接池。
Thread Pool根据参数thread_pool_size被分为若干个group,每个group维护client 发起的 connections,当Mysql建立 connection 时, 
MySQL 根据connection的thread id 对thread_pool_size取模,将connection 发起的sql 语句分配到对应的group。每个group的最大worker
数量为thread_pool_oversubscribe+1。若worker达到最大数量后还是不足以处理回话请求,则连接在本group上等待,导致sql 语句的rt 增大;

因此将thread_pool_oversubscribe参数调大,但是问题依旧;

检查thread_cache_size,服务器内存大小为64G,thread_cache_size=128;
每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,如果线程缓存中有空闲线程,这时候如果建立新连接,MYSQL就会很快的响应连接请求;

show status like '%thread%';
Variable_name Value
Threads_cached     0
Threads_connected   219
Threads_created     655068
Threads_running     48

使用 show status查看当前mysql连接情况:

SHOW STATUS WHERE Variable_name LIKE '%Thread%';


Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。


Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。


Threads_created :代表从最近一次服务启动,已创建线程的数量。


Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。


最好将thread_cache_size设置成与threads_connected一样。


show variables like '%thread%';
+-----------------------------------------+-----------------+
| Variable_name                           | Value           |
+-----------------------------------------+-----------------+
| innodb_purge_threads                    | 1               |
| innodb_read_io_threads                  | 4               |
| innodb_thread_concurrency               | 0               |
| innodb_thread_sleep_delay               | 10000           |
| innodb_write_io_threads                 | 4               |
| max_delayed_threads                     | 20              |
| max_insert_delayed_threads              | 20              |
| myisam_repair_threads                   | 1               |
| perfORMance_schema_max_thread_classes   | 50              |
| performance_schema_max_thread_instances | -1              |
| pseudo_thread_id                        | 8735851         |
| thread_cache_size                       | 128             |
| thread_concurrency                      | 24              |
| thread_handling                         | pool-of-threads |
| thread_pool_high_prio_mode              | transactions    |
| thread_pool_high_prio_tickets           | 4294967295      |
| thread_pool_idle_timeout                | 60              |
| thread_pool_max_threads                 | 100000          |
| thread_pool_oversubscribe               | 40              |
| thread_pool_size                        | 12              |
| thread_pool_stall_limit                 | 500             |
| thread_stack                            | 262144          |
| thread_statistics                       | OFF             |
+-----------------------------------------+-----------------+


可以不断刷新,如果Threads_cached = 0 且 Threads_created 不断增大,那么当前thread_cache_size的值设置要改大,改到 Threads_connected 值左右,
再结合物理内存 1G  —> 8;2G  —> 16; 3G  —> 32; >3G  —> 64 二个情况综合考虑一下值,将thread_cache_size改为512;
注译:
Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
Threads_created :代表从最近一次服务启动,已创建线程的数量。
Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。




修改thread_cache_size为512后,重新测试程序连接数据库响应时间,速度极快,不再出现程序连接数据库响应慢的情况!


您可能感兴趣的文档:

--结束END--

本文标题: Thread pool参数引起的程序连接数据库响应慢

本文链接: https://lsjlt.com/news/46138.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Thread pool参数引起的程序连接数据库响应慢
    数据库版本:percona-mysql 5.6.16 在很长一段时间,都会出现程序连接数据库,出现响应慢的情况,正常在几到几十毫秒之间,但是偶尔会出现上百毫秒的情况; 开始由于开发重新设置并调整过程序连...
    99+
    2024-04-02
  • 数据库连接池:数据库应用程序优化的基石
    连接池的优势 减少连接建立时间:建立数据库连接是一项耗时的操作。通过重用已建立的连接,连接池可以消除这个开销,从而提高应用程序的响应时间。 提高并发性:连接池可以管理大量连接,允许多个客户端同时访问数据库。这对于高并发应用程序至关重要,...
    99+
    2024-04-02
  • 由db_domain引起的数据库连接异常怎么解决
    这篇文章主要讲解了“由db_domain引起的数据库连接异常怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“由db_domain引起的数据库连接异常怎...
    99+
    2024-04-02
  • 连接池:数据库应用程序性能的救星
    数据库应用程序是现代软件体系结构的重要组成部分。它们依赖于与数据库的稳定连接,以执行数据查询和更新操作。然而,频繁建立和关闭数据库连接会极大地损害应用程序的性能。连接池提供了应对这一挑战的有效解决方案。 连接池的工作原理 连接池是一种服务...
    99+
    2024-04-02
  • Flex应用程序如何连接数据
    这篇文章主要介绍了Flex应用程序如何连接数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex应用程序连接数据请记住,在Flex应用程序中对数据的操作最重要的事情是:F...
    99+
    2023-06-17
  • 数据库连接池详解:为数据库应用程序注入速度和效率
    优势 减少连接开销:建立和关闭数据库连接是一项耗时的过程。连接池通过重用现有连接来消除此开销,从而显着提高性能。 提高可扩展性:连接池可以动态扩展或缩减,以满足应用程序不断变化的需求。这确保应用程序在高负载期间保持响应能力。 增强可靠性...
    99+
    2024-04-02
  • 连接池的魔法:让数据库应用程序平稳运行
    连接池的原理 连接池是一个由预先创建的数据库连接组成的集合。当应用程序需要与数据库通信时,它会从池中获取一个连接。连接已准备好使用,无需额外的配置或开销。一旦应用程序完成使用连接,它就会将其返回池中,以便其他应用程序可以使用它。 连接池的...
    99+
    2024-04-02
  • 微信小程序连接MySQL数据库的全过程
    目录简要说明:准备工作MySQL配置数据库、数据表目录结构客户端代码实现服务器端代码实现效果展示总结简要说明: 承接上一个商品列表页,在服务器端连接MySQL数据库,通过条件匹配查寻...
    99+
    2024-04-02
  • MySQL连接数对数据库性能的影响分析
    MySQL连接数对数据库性能的影响分析 随着互联网应用的不断发展,数据库成为了支撑应用系统重要的数据存储和管理工具。在数据库系统中,连接数是一个重要的概念,它直接关系到数据库系统的性能...
    99+
    2024-04-02
  • 数据库连接池管理全攻略,让您的应用飞起来
    数据库连接池是什么? 数据库连接池是一个存储预先建立的数据库连接的池。应用程序可以从连接池中获取连接,并在使用完成后将其归还给连接池。连接池可以提高应用程序的性能,减少数据库服务器的负载。 为什么需要数据库连接池? 在应用程序中使用数据...
    99+
    2024-02-25
    数据库连接池 JDBC 性能优化
  • Java连接MySQL数据库命令行程序过程
    目录创建表创建命令行程序下载并导入jar包创建工具包创建实体类创建持久化层业务层调用总结SQL编程包括两种形式,一种是过程化编程,主要通过数据库交互式工具,通过存储过程、触发器、函数...
    99+
    2024-04-02
  • PHP 函数在连接数据库中的应用
    php为数据库连接提供了多种函数:pdo 连接:使用 pdo::__construct() 建立连接,pdo::attr_errmode 异常模式可捕捉错误。mysqli 连接:通过 m...
    99+
    2024-04-24
    数据库 php mysql
  • 远程客户端连接MysqL数据库太慢怎么办
    这篇文章主要讲解了“远程客户端连接MysqL数据库太慢怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“远程客户端连接MysqL数据库太慢怎么办”吧!远程...
    99+
    2024-04-02
  • 拨开数据库连接池的迷雾:提升应用程序效率
    引言 数据库连接池是一种管理数据库连接的工具,它在应用程序和数据库服务器之间充当中介。其主要目的是提高应用程序的效率和可扩展性,通过池化数据库连接,避免了每次请求都需要重新建立连接的开销。 原理 数据库连接池通过以下步骤工作: 初始化...
    99+
    2024-02-15
    数据库连接池 JDBC HikariC3P0 DbUtils
  • 微信小程序怎么连接MySQL数据库
    这篇“微信小程序怎么连接MySQL数据库”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“微信小程序怎么连接MySQL数据库”文...
    99+
    2023-06-28
  • 连接池的艺术:提升数据库应用程序性能的奥秘
    连接池的原理 连接池是一种缓存机制,可存储预先建立的数据库连接。当应用程序需要连接数据库时,它可以从连接池中获取一个空闲连接,而不必等待建立新连接。这可以极大地减少应用程序的延迟,并提高性能。 连接池的优势 使用连接池具有以下优势: 减...
    99+
    2024-04-02
  • Java数据库连接池Druid的配置参数有哪些
    这篇文章主要介绍“Java数据库连接池Druid的配置参数有哪些”,在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据库连接池D...
    99+
    2023-06-25
  • Java怎样创建以JDBC连接数据库的程序
    今天就跟大家聊聊有关Java怎样创建以JDBC连接数据库的程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JDBC连接数据库   ◆  创建一个以JDBC连接数...
    99+
    2023-06-17
  • 小程序与连接阿里云数据库的区别
    随着科技的发展,越来越多的企业开始使用小程序来提升业务效率。然而,如何将小程序与数据库进行有效连接,是许多企业所面临的问题。本文将详细对比小程序与连接阿里云数据库的区别,帮助企业更好地理解如何进行数据库操作。 一、小程序与连接阿里云数据库的...
    99+
    2023-11-05
    阿里 区别 数据库
  • 数据库连接池管理的性能优化技巧:让您的数据库飞起来
    一、连接复用 连接复用是指将已经建立的连接重复利用,而不是每次请求都创建一个新的连接。连接复用可以大大减少数据库服务器的连接开销,从而提高数据库的性能。 在Java中,可以使用连接池来实现连接复用。连接池是一个预先创建好一定数量的连接的...
    99+
    2024-02-13
    数据库连接池 性能优化 连接复用 连接泄漏 连接超时
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作