CN111177203A - 动态调节数据库连接池大小的方法、服务器及存储介质 - Google Patents
动态调节数据库连接池大小的方法、服务器及存储介质 Download PDFInfo
- Publication number
- CN111177203A CN111177203A CN201911311184.2A CN201911311184A CN111177203A CN 111177203 A CN111177203 A CN 111177203A CN 201911311184 A CN201911311184 A CN 201911311184A CN 111177203 A CN111177203 A CN 111177203A
- Authority
- CN
- China
- Prior art keywords
- connection
- maximum
- client
- database
- connections
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种动态调节数据库连接池大小的方法,应用于服务器,该方法包括设置数据库连接池的最小连接数量、最大连接数量及连接总数量;获取客户端的连接需求值,判断连接需求值是否小于或等于最大连接数量,若是则发放连接给客户端,若否则获取超过最大连接数量的连接请求的等待时间,若到达异常触发时间值未得到响应,则扩增最大连接数量,并在新建连接发放给客户端;当新建的连接存活时间到达销毁触发时间值,且服务器未接收到新的连接请求时,删除新建的连接,并初始化最大连接数量。本发明能够自动扩增连接池的最大连接数量,避免连接请求由于长时间等待造成连接获取异常,同时能够自动删除长时间未使用的新建连接,释放资源。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种动态调节数据库连接池大小的方法、服务器及存储介质。
背景技术
现有的数据库连接池的管理方案一般是:预先设置好连接池的各项配置参数,连接池在工作时就按照设置好的配置参数运行,配置参数一般包括连接池的最大连接数、最小连接数等,其中,最小连接数是连接池会一直保持的数据连接,如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费掉;最大连接数是连接池能够申请的最大连接数,如果数据连接请求超过最大连接数,后面的数据连接请求将被加入到消息队列中,直到有数据库连接释放后,会按照消息队列中的数据连接请求的顺序分配释放的数据库连接。
但是当消息队列中的数据连接请求等待时间较长时,会导致系统异常,进而影响之后的数据库操作。
发明内容
本发明的主要目的在于提供一种动态调节数据库连接池大小的方法、服务器及存储介质,旨在解决现有的数据库连接池当进入消息队列中的数据连接请求等待时间较长时,会导致系统异常,进而影响之后的数据库操作的问题。
为实现上述目的,本发明提供的一种动态调节数据库连接池大小的方法,应用于服务器,该方法包括:
设置步骤:设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量;
第一处理步骤:接收客户端发出的连接请求,解析所述连接请求得到所述客户端的连接需求值,判断所述客户端的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端;
第二处理步骤:若所述客户端的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端;及
初始化步骤:当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
优选地,所述第一处理步骤包括:
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则根据所述客户端的连接需求值在小于或等于所述最大连接数值的范围内新建相应数量的连接,并发放连接给所述客户端;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端。
优选地,所述第二处理步骤包括:
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端。
优选地,所述计算规则为:
a=b*(1+c)
其中,a为扩增后的最大连接数量,b为当前最大连接数量,c为预设的扩展因子,c≧0。
优选地,所述第二处理步骤还包括:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端。
为实现上述目的,本发明还进一步提供一种服务器,所述服务器包括存储器和处理器,所述存储器上存储有动态调节数据库连接池大小程序,所述动态调节数据库连接池大小程序被所述处理器执行时实现如下步骤:
所述动态调节数据库连接池大小程序被所述处理器执行时实现如下步骤:
设置步骤:设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量;
第一处理步骤:接收客户端发出的连接请求,解析所述连接请求得到所述客户端的连接需求值,判断所述客户端的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端;
第二处理步骤:若所述客户端的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端;及
初始化步骤:当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
优选地,所述第一处理步骤包括:
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则在小于或等于所述最大连接数值的范围内新建连接,并发放连接给所述客户端;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端。
优选地,所述第二处理步骤包括:
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端。
优选地,所述第二处理步骤还包括:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有动态调节数据库连接池大小程序,所述动态调节数据库连接池大小程序可被一个或者多个处理器执行,以实现如上所述的动态调节数据库连接池大小的方法的步骤。
本发明提出的动态调节数据库连接池大小的方法、服务器及存储介质,通过设置数据库连接池的最小连接数量、最大连接数量及连接总数量,并新建与最小连接数量对应的连接作为当前的存活连接数量;获取客户端的连接需求值,判断连接需求值是否小于或等于最大连接数量,若是则发放连接给客户端,若否则将超过最大连接数量的余下连接请求存储至服务器的消息队列,获取消息队列中连接请求的等待时间,若消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给客户端;当新建的连接存活时间到达销毁触发时间值,且服务器未接收到新的连接请求时,删除新建的连接,并对扩增后的最大连接数量进行初始化。本发明能够根据客户端对连接的需求值大小扩增连接池的最大连接数量,避免进入消息队列中的连接请求由于长时间等待造成连接获取异常,同时能够自动删除长时间未使用的新建连接,释放资源,对扩增后的连接池最大连接数量进行初始化。避免数据库连接资源的浪费和由于连接需求值瞬时过大造成系统异常。
附图说明
图1为本发明服务器较佳实施例的应用环境图;
图2为图1中动态调节数据库连接池大小程序较佳实施例的程序模块示意图;
图3为本发明动态调节数据库连接池大小的方法较佳实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参附图做进一步说明。
具体实施方式
为了使本发明的目的、技术本实施例及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术本实施例可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术本实施例的结合出现相互矛盾或无法实现时应当认为这种技术本实施例的结合不存在,也不在本发明要求的保护范围之内。
本发明提供一种服务器1。
所述服务器1包括,但不仅限于,存储器11、处理器12及网络接口13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是服务器1的内部存储单元,例如该服务器1的硬盘。存储器11在另一些实施例中也可以是服务器1的外部存储设备,例如该服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
进一步地,存储器11还可以既包括服务器1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于服务器1的应用软件及各类数据,例如动态调节数据库连接池大小程序10的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行动态调节数据库连接池大小程序10等。
网络接口13可选的可以包括标准的有线接口、无线接口(如WI-FI接口),通常用于在该服务器与其他电子设备之间建立通信连接。
客户端14可以是桌上型计算机、笔记本、平板电脑、手机等。
网络15可以为互联网、云网络、无线保真(Wi-Fi)网络、个人网(PAN)、局域网(LAN)和/或城域网(MAN)。网络环境中的各种设备可以被配置为根据各种有线和无线通信协议连接到通信网络。这样的有线和无线通信协议的例子可以包括但不限于以下中的至少一个:传输控制协议和互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、文件传输协议(FTP)、ZigBee、EDGE、IEEE 802.11、光保真(Li-Fi)、802.16、IEEE 802.11s、IEEE 802.11g、多跳通信、无线接入点(AP)、设备对设备通信、蜂窝通信协议和/或蓝牙(BlueTooth)通信协议或其组合。
可选地,该服务器1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以称为显示屏或显示单元,用于显示在服务器1中处理的信息以及用于显示可视化的用户界面。
图1仅示出了具有组件11-15以及动态调节数据库连接池大小程序10的服务器1,本领域技术人员可以理解的是,图1示出的结构并不构成对服务器1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在本实施例中,图1的动态调节数据库连接池大小程序10被处理器12执行时,实现以下步骤:
设置步骤:设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量;
第一处理步骤:接收客户端14发出的连接请求,解析所述连接请求得到所述客户端14的连接需求值,判断所述客户端14的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端14;
第二处理步骤:若所述客户端14的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端;及
初始化步骤:当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器1未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
在另一实施例中,所述第二处理步骤还包括:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端14。
关于上述步骤的详细介绍,请参照下述图2关于动态调节数据库连接池大小程序10实施例的程序模块示意图及图3关于动态调节数据库连接池大小的方法实施例的方法流程示意图的说明。
参照图2所示,为图1中动态调节数据库连接池大小程序10实施例的程序模块示意图。动态调节数据库连接池大小程序10被分割为多个模块,该多个模块存储于存储器11中,并由处理器12执行,以完成本发明。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段。
在本实施例中,所述动态调节数据库连接池大小程序10包括设置模块110、第一处理模块120、第二处理模块130及初始化模块140。
设置模块110,用于设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量。
在本实施例中,所述连接池可以是DBCP连接池(Database connection pool,数据库连接池)、C3PO连接池(一种开放源代码的JDBC连接池)、proxool连接池等各种类型的数据库连接池的其中一种。
数据库连接池主要负责分配、管理和释放数据库连接。数据库连接池在系统初始化的时候,将数据库连接作为对象存储在系统的存储器11中,当客户端需要访问数据库时,并非建立一个新的连接,而是从数据库连接池中取出一个已建立的空闲连接。使用完毕后,也并非将连接关闭,而是将连接放回数据库连接池中,以供下一个连接请求访问使用。而连接的建立、断开都由数据库连接池自身来管理,或者通过其自身的管理机制来管理。
数据库连接池可以在系统中配置最小连接数量、最大连接数量、等待时间等参数。所述最小连接数量即数据库系统默认创建的连接数量最小值,系统启动的时候就会自动创建这些连接,不管是否有客户端14访问数据库的查询操作,这部分连接都会存在。所述最大连接数量为数据库系统可以创建的最大连接数量,当最大连接数量小于客户端14对连接的需求值时,客户端14发出的连接请求将进入消息队列中等待其他请求释放连接,如果在等待时间内仍然获取不到连接,则会抛出异常,提示连接请求失败。所述数据库系统的连接总数量是指整个系统中所有连接数量的最大值。
第一处理模块120,用于接收客户端14发出的连接请求,解析所述连接请求得到所述客户端14的连接需求值,判断所述客户端14的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端14。
在本实施例中,服务器1接收客户端14发出的连接请求,解析所述连接请求得到所述客户端14的连接需求值,判断所述客户端14的连接需求值是否小于或等于所述最大连接数量。
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则根据所述客户端14的连接需求值在小于或等于所述最大连接数值的范围内新建相应数量的连接,并发放连接给所述客户端14;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端14。
在本实施例中,当所述连接请求中的连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则在小于或等于所述最大连接数量的范围内(例如40-100之间)新建连接,并发放连接给所述客户端14,同时这些新建的连接在被客户端14使用完后不会马上被释放,而是被重新放到数据库连接池中等待重复使用,从而避免连接资源的浪费。当连接请求中的连接需求值(例如20个)小于或等于所述连接池的最小连接数量(例如40个)时,并非建立一个新的连接,而是从连接池中直接取出相应数量的连接,并将连接发放给所述客户端14。
第二处理模块130,用于判断是否需要扩增所述最大连接数量以满足连接的发放。
在本实施例中,若所述客户端14的连接需求值大于所述最大连接数量,,则将超过所述最大连接数量的余下连接请求存储至所述服务器1的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端14。
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端14。
在本实施例中,当连接请求中携带的连接需求值(例如120个)大于连接池的最大连接数量(例如100个)时,提取超过最大连接数量的连接对应的连接请求(例如20个)存储至服务器1的消息队列中,直到有连接被释放后,按照消息队列中的连接请求的先后顺序分配释放的连接。同时对存储在消息队列中的连接请求的等待时间进行统计,将等待时间超过预先确定的异常触发时间值(例如2秒)的连接请求标记为异常请求,随后判断被标记为异常请求的连接请求的数量是否大于预设的连接异常阈值(例如50),且小于最大连接数量(例如100个),若是则根据预设的计算规则扩增最大连接数量。
所述计算规则为:
a=b*(1+c)
其中,a为扩增后的最大连接数量,b为当前最大连接数量,c为预设的扩展因子,c≧0,例如c=0.5,b=100个,即a=100*(1+0.5)=150个。并在小于或等于扩增后的最大连接数量的范围内新建连接,将连接发放给对应的客户端14。
初始化模块140,用于当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器1未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
在本实施例中,为了避免连接资源长时间处于存活且未使用状态,造成连接资源的浪费,因此,当服务器1判断新建的连接存活时间到达预先确定的销毁触发时间值(例如5秒),且服务器1未接收到新增的连接请求时,服务器1自动将该新建的连接进行删除,释放资源,并对扩增后的最大连接数量进行初始化。利用本发明可以节约数据库的连接资源的同时提高系统的可用率。
在另一实施例中,该程序还执行以下步骤:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端14。
在本实施例中,当数据库系统判断异常连接的数量大于预设的连接异常阈值(例如50),且大于或等于数据库系统的连接总数量(例如200个)时,为了避免数据库系统中的连接资源被一个连接池消耗完,导致数据库系统中的其他连接池无法创建连接。因此,当服务器1判断异常连接的数量大于或等于服务器1系统的最大连接数量时,数据库系统将拒绝该连接请求,并发出连接异常信息反馈至客户端14。
此外,本发明还提供一种动态调节数据库连接池大小的方法。参照图3所示,为本发明动态调节数据库连接池大小的方法的实施例的方法流程示意图。服务器1的处理器12执行存储器11中存储的动态调节数据库连接池大小程序10时实现动态调节数据库连接池大小的方法的如下步骤:
S110,设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量。
在本实施例中,所述连接池可以是DBCP连接池(Database connection pool,数据库连接池)、C3PO连接池(一种开放源代码的JDBC连接池)、proxool连接池等各种类型的数据库连接池的其中一种。
数据库连接池主要负责分配、管理和释放数据库连接。数据库连接池在系统初始化的时候,将数据库连接作为对象存储在系统的存储器11中,当客户端14需要访问数据库时,并非建立一个新的连接,而是从数据库连接池中取出一个已建立的空闲连接。使用完毕后,也并非将连接关闭,而是将连接放回数据库连接池中,以供下一个连接请求访问使用。而连接的建立、断开都由数据库连接池自身来管理,或者通过其自身的管理机制来管理。
数据库连接池可以在系统中配置最小连接数量、最大连接数量、等待时间等参数。所述最小连接数量即数据库系统默认创建的连接数量最小值,系统启动的时候就会自动创建这些连接,不管是否有客户端14访问数据库的查询操作,这部分连接都会存在。所述最大连接数量为数据库系统可以创建的最大连接数量,当最大连接数量小于客户端14对连接的需求值时,客户端14发出的连接请求将进入消息队列中等待其他请求释放连接,如果在等待时间内仍然获取不到连接,则会抛出异常,提示连接请求失败。所述数据库系统的连接总数量是指整个系统中所有连接数量的最大值。
S120,接收客户端14发出的连接请求,解析所述连接请求得到所述客户端14的连接需求值,判断所述客户端14的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端14。
在本实施例中,服务器1接收客户端14发出的连接请求,解析所述连接请求得到所述客户端14的连接需求值,判断所述客户端14的连接需求值是否小于或等于所述最大连接数量。
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则根据所述客户端14的连接需求值在小于或等于所述最大连接数值的范围内新建相应数量的连接,并发放连接给所述客户端14;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端14。
在本实施例中,当所述连接请求中的连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则在小于或等于所述最大连接数量的范围内(例如40-100之间)新建连接,并发放连接给所述客户端14,同时这些新建的连接在被客户端14使用完后不会马上被释放,而是被重新放到数据库连接池中等待重复使用,从而避免连接资源的浪费。当连接请求中的连接需求值(例如20个)小于或等于所述连接池的最小连接数量(例如40个)时,并非建立一个新的连接,而是从连接池中直接取出相应数量的连接,并将连接发放给所述客户端14。
S130,判断是否需要扩增所述最大连接数量以满足连接的发放。
在本实施例中,若所述客户端14的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器1的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端14。
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端14。
在本实施例中,当连接请求中携带的连接需求值(例如120个)大于连接池的最大连接数量(例如100个)时,提取超过最大连接数量的连接对应的连接请求(例如20个)存储至服务器1的消息队列中,直到有连接被释放后,按照消息队列中的连接请求的先后顺序分配释放的连接。同时对存储在消息队列中的连接请求的等待时间进行统计,将等待时间超过预先确定的异常触发时间值(例如2秒)的连接请求标记为异常请求,随后判断被标记为异常请求的连接请求的数量是否大于预设的连接异常阈值(例如50),且小于最大连接数量(例如100个),若是则根据预设的计算规则扩增最大连接数量。
所述计算规则为:
a=b*(1+c)
其中,a为扩增后的最大连接数量,b为当前最大连接数量,c为预设的扩展因子,c≧0,例如c=0.5,b=100个,即a=100*(1+0.5)=150个。并在小于或等于扩增后的最大连接数量的范围内新建连接,将连接发放给对应的客户端14。
S140,当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
在本实施例中,为了避免连接资源长时间处于存活且未使用状态,造成连接资源的浪费,因此,当服务器1判断新建的连接存活时间到达预先确定的销毁触发时间值(例如5秒),且服务器1未接收到新增的连接请求时,服务器1自动将该新建的连接进行删除,释放资源,并对扩增后的最大连接数量进行初始化。利用本发明可以节约数据库的连接资源的同时提高系统的可用率。
在另一实施例中,该方法还包括以下步骤:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端14。
在本实施例中,当数据库系统判断异常连接的数量大于预设的连接异常阈值(例如50),且大于或等于数据库系统的连接总数量(例如200个)时,为了避免数据库系统中的连接资源被一个连接池消耗完,导致数据库系统中的其他连接池无法创建连接。因此,当服务器1判断异常连接的数量大于或等于服务器1系统的最大连接数量时,数据库系统将拒绝该连接请求,并发出连接异常信息反馈至客户端14。
此外,本发明实施例还提出一种计算机可读存储介质,计算机可读存储介质可以是硬盘、多媒体卡、SD卡、闪存卡、SMC、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器等中的任意一种或者几种的任意组合。计算机可读存储介质中包括动态调节数据库连接池大小程序10,本发明之计算机可读存储介质的具体实施方式与上述动态调节数据库连接池大小的方法以及服务器1的具体实施方式大致相同,在此不再赘述。
需要说明的是,上述本发明实施例序日仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本发明实施例序日仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术本实施例本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种动态调节数据库连接池大小的方法,应用于服务器,其特征在于,该方法包括:
设置步骤:设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量;
第一处理步骤:接收客户端发出的连接请求,解析所述连接请求得到所述客户端的连接需求值,判断所述客户端的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端;
第二处理步骤:若所述客户端的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端;及
初始化步骤:当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
2.如权利要求1所述的动态调节数据库连接池大小的方法,其特征在于,所述第一处理步骤包括:
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则根据所述客户端的连接需求值在小于或等于所述最大连接数值的范围内新建相应数量的连接,并发放连接给所述客户端;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端。
3.如权利要求1所述的动态调节数据库连接池大小的方法,其特征在于,所述第二处理步骤包括:
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端。
4.如权利要求3所述的动态调节数据库连接池大小的方法,其特征在于,所述计算规则为:
a=b*(1+c)
其中,a为扩增后的最大连接数量,b为当前最大连接数量,c为预设的扩展因子,c≧0。
5.如权利要求1-4任一项所述的动态调节数据库连接池大小的方法,其特征在于,所述第二处理步骤还包括:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端。
6.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器上存储有动态调节数据库连接池大小程序,所述动态调节数据库连接池大小程序被所述处理器执行时实现如下步骤:
设置步骤:设置数据库连接池的最小连接数量、最大连接数量及数据库系统的连接总数量,并新建与所述最小连接数量对应的连接作为所述数据库连接池当前的存活连接数量;
第一处理步骤:接收客户端发出的连接请求,解析所述连接请求得到所述客户端的连接需求值,判断所述客户端的连接需求值是否小于或等于所述最大连接数量,若是则发放连接给所述客户端;
第二处理步骤:若所述客户端的连接需求值大于所述最大连接数量,则将超过所述最大连接数量的余下连接请求存储至所述服务器的消息队列,获取所述消息队列中的连接请求的等待时间,若所述消息队列中的连接请求到达预先确定的异常触发时间值未得到响应,则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端;及
初始化步骤:当所述新建的连接存活时间到达预先确定的销毁触发时间值,且所述服务器未接收到新的所述连接请求时,删除所述新建的连接,并对所述扩增后的最大连接数量进行初始化。
7.如权利要求6所述的服务器,其特征在于,所述第一处理步骤包括:
当判断所述连接需求值大于所述最小连接数量,且小于所述最大链接数量时,则在小于或等于所述最大连接数值的范围内新建连接,并发放连接给所述客户端;或
当判断所述连接需求值小于或等于所述最小连接数量时,根据所述需求值大小从所述连接池中获取相应数量的连接发放给所述客户端。
8.如权利要求6所述的服务器,其特征在于,所述第二处理步骤包括:
获取所述消息队列中的连接请求的等待时间,将等待时间超过预先确定的异常触发时间值未得到响应的连接请求标记为异常请求;及
判断所述异常请求的数量是否大于预设的连接异常阈值,且小于所述最大连接数量,若是则根据预设的计算规则扩增所述最大连接数量,并在扩增后的最大连接数量的范围内新建连接发放给所述客户端。
9.如权利要求6-8任一项所述的服务器,其特征在于,所述第二处理步骤还包括:
若所述异常连接的数量大于预设的连接异常阈值,且大于或等于所述数据库系统的连接总数量,则拒绝所述连接请求,并发出连接异常信息反馈至所述客户端。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有动态调节数据库连接池大小程序,所述动态调节数据库连接池大小程序可被一个或者多个处理器执行,以实现如权利要求1-5中任一项所述的动态调节数据库连接池大小的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911311184.2A CN111177203B (zh) | 2019-12-18 | 2019-12-18 | 动态调节数据库连接池大小的方法、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911311184.2A CN111177203B (zh) | 2019-12-18 | 2019-12-18 | 动态调节数据库连接池大小的方法、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177203A true CN111177203A (zh) | 2020-05-19 |
CN111177203B CN111177203B (zh) | 2023-08-15 |
Family
ID=70652162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911311184.2A Active CN111177203B (zh) | 2019-12-18 | 2019-12-18 | 动态调节数据库连接池大小的方法、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177203B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115020A (zh) * | 2020-08-27 | 2020-12-22 | 北京基调网络股份有限公司 | 一种数据库连接池异常监测方法、装置及计算机设备 |
CN112181652A (zh) * | 2020-09-25 | 2021-01-05 | 北京天融信网络安全技术有限公司 | 一种调整连接池容量的方法、装置、存储介质和电子设备 |
CN112817933A (zh) * | 2020-12-30 | 2021-05-18 | 国电南京自动化股份有限公司 | 一种弹性数据库连接池的管理方法及装置 |
CN113760656A (zh) * | 2021-08-30 | 2021-12-07 | 深圳壹账通智能科技有限公司 | 一种连接池的连接线程监控方法、装置、介质及设备 |
CN114567686A (zh) * | 2022-04-29 | 2022-05-31 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
CN114968890A (zh) * | 2022-05-27 | 2022-08-30 | 中国第一汽车股份有限公司 | 一种同步通信控制方法、装置、系统及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309735A (zh) * | 2018-11-27 | 2019-02-05 | 深圳市网心科技有限公司 | 连接处理方法、服务器、系统及存储介质 |
CN109800261A (zh) * | 2018-12-15 | 2019-05-24 | 平安科技(深圳)有限公司 | 双数据库连接池的动态控制方法、装置及相关设备 |
CN109800067A (zh) * | 2018-12-15 | 2019-05-24 | 中国平安人寿保险股份有限公司 | 基于云监控的数据库连接优化方法、装置及相关设备 |
CN110445858A (zh) * | 2019-08-02 | 2019-11-12 | 深圳震有科技股份有限公司 | 服务端同时连接客户端方法及装置、设备、介质 |
CN110458398A (zh) * | 2019-07-05 | 2019-11-15 | 重庆金融资产交易所有限责任公司 | 项目数据监控方法、服务器及存储介质 |
-
2019
- 2019-12-18 CN CN201911311184.2A patent/CN111177203B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109309735A (zh) * | 2018-11-27 | 2019-02-05 | 深圳市网心科技有限公司 | 连接处理方法、服务器、系统及存储介质 |
CN109800261A (zh) * | 2018-12-15 | 2019-05-24 | 平安科技(深圳)有限公司 | 双数据库连接池的动态控制方法、装置及相关设备 |
CN109800067A (zh) * | 2018-12-15 | 2019-05-24 | 中国平安人寿保险股份有限公司 | 基于云监控的数据库连接优化方法、装置及相关设备 |
CN110458398A (zh) * | 2019-07-05 | 2019-11-15 | 重庆金融资产交易所有限责任公司 | 项目数据监控方法、服务器及存储介质 |
CN110445858A (zh) * | 2019-08-02 | 2019-11-12 | 深圳震有科技股份有限公司 | 服务端同时连接客户端方法及装置、设备、介质 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115020A (zh) * | 2020-08-27 | 2020-12-22 | 北京基调网络股份有限公司 | 一种数据库连接池异常监测方法、装置及计算机设备 |
CN112115020B (zh) * | 2020-08-27 | 2021-03-26 | 北京基调网络股份有限公司 | 一种数据库连接池异常监测方法、装置及计算机设备 |
CN112181652A (zh) * | 2020-09-25 | 2021-01-05 | 北京天融信网络安全技术有限公司 | 一种调整连接池容量的方法、装置、存储介质和电子设备 |
CN112181652B (zh) * | 2020-09-25 | 2023-11-28 | 北京天融信网络安全技术有限公司 | 一种调整连接池容量的方法、装置、存储介质和电子设备 |
CN112817933A (zh) * | 2020-12-30 | 2021-05-18 | 国电南京自动化股份有限公司 | 一种弹性数据库连接池的管理方法及装置 |
CN113760656A (zh) * | 2021-08-30 | 2021-12-07 | 深圳壹账通智能科技有限公司 | 一种连接池的连接线程监控方法、装置、介质及设备 |
CN114567686A (zh) * | 2022-04-29 | 2022-05-31 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
CN114567686B (zh) * | 2022-04-29 | 2022-08-09 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
CN114968890A (zh) * | 2022-05-27 | 2022-08-30 | 中国第一汽车股份有限公司 | 一种同步通信控制方法、装置、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111177203B (zh) | 2023-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177203B (zh) | 动态调节数据库连接池大小的方法、服务器及存储介质 | |
CN111447150B (zh) | 访问请求限流方法、服务器及存储介质 | |
CN110347560B (zh) | 大数据产品的异常提示方法、装置、系统、设备及介质 | |
WO2020211344A1 (zh) | 一种基于mqtt的消息分发方法、服务器、装置及存储介质 | |
US20240259327A1 (en) | Software load balancer to maximize utilization | |
CN109672580B (zh) | 全链路监控方法、装置、终端设备及存储介质 | |
CN109672888B (zh) | 图片压缩方法、设备及计算机可读存储介质 | |
CN110851248B (zh) | 异步任务数据处理方法、装置及计算机可读存储介质 | |
CN108418747B (zh) | 基于即时通讯的信息发送方法、装置、设备和存储介质 | |
CN109657899B (zh) | 事项处理方法、装置、设备及可读存储介质 | |
CN110471749B (zh) | 任务处理方法、装置、计算机可读存储介质和计算机设备 | |
CN107995286B (zh) | 基于dubbo平台的服务自动启停方法、服务器及存储介质 | |
CN111464616A (zh) | 自动调节应用负载服务数量的方法、服务器及存储介质 | |
CN112130936B (zh) | 基于轮询的数据调用方法、装置、设备及存储介质 | |
CN112395107A (zh) | 税控设备控制的方法、装置、存储介质及电子设备 | |
CN113688183A (zh) | 多类型数据源抽取方法、系统、终端设备以及存储介质 | |
CN110428840B (zh) | 语音识别系统中的负载均衡实现方法、装置以及计算机设备 | |
CN110598093B (zh) | 一种业务规则管理方法及装置 | |
CN111580948A (zh) | 任务调度方法、装置及计算机设备 | |
CN113590433B (zh) | 数据管理方法、数据管理系统和计算机可读存储介质 | |
CN111400310A (zh) | 基于审批链配置的数据监控方法、服务器及存储介质 | |
CN108768727B (zh) | 访问第三方服务的方法、电子装置及可读存储介质 | |
CN109391658B (zh) | 一种账号数据同步方法及其设备、存储介质、终端 | |
CN109150720B (zh) | 业务链报文转发方法、装置、设备及计算机可读存储介质 | |
CN111159131A (zh) | 性能优化方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |