本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種連接參數(shù)的動(dòng)態(tài)設(shè)置方法和裝置。
背景技術(shù):
在一些應(yīng)用場景下,例如對(duì)于Web應(yīng)用系統(tǒng),應(yīng)用服務(wù)器一般為每一個(gè)客戶端(即一個(gè)會(huì)話,session)訪問開辟一個(gè)獨(dú)立線程,以提高應(yīng)用系統(tǒng)性能。此時(shí),如果數(shù)據(jù)庫訪問采用單線程的建立、使用、關(guān)閉,就會(huì)嚴(yán)重阻塞多線程執(zhí)行效率,并且,一個(gè)數(shù)據(jù)庫訪問的建立,會(huì)消耗較大的系統(tǒng)資源和時(shí)間,如果頻繁地建立和關(guān)閉數(shù)據(jù)庫訪問,會(huì)極大降低系統(tǒng)性能,因此,數(shù)據(jù)庫連接池應(yīng)運(yùn)而生。
一般地,當(dāng)數(shù)據(jù)庫連接池建立時(shí),初始化幾個(gè)數(shù)據(jù)連接,等待應(yīng)用程序調(diào)用。應(yīng)用程序調(diào)用一次,就取走一個(gè)數(shù)據(jù)連接,使用完了就歸還數(shù)據(jù)連接。當(dāng)連接池內(nèi)的數(shù)據(jù)連接取完了,就增加新數(shù)據(jù)連接,直到創(chuàng)建連接達(dá)到最大允許連接個(gè)數(shù)。若再取連接時(shí),等待一段時(shí)間,若還沒有空閑連接就會(huì)拋出異常。這就是一般數(shù)據(jù)庫連接池的工作原理,采用數(shù)據(jù)庫連接池技術(shù),能極大提升應(yīng)用系統(tǒng)的數(shù)據(jù)訪問性能。
相關(guān)技術(shù)中,需要手動(dòng)對(duì)數(shù)據(jù)庫連接池的參數(shù)進(jìn)行設(shè)置,例如,通過將參數(shù)手動(dòng)寫入配置文件,數(shù)據(jù)庫連接池加載該配置文件以設(shè)置參數(shù),無法根據(jù)數(shù)據(jù)庫所在服務(wù)器負(fù)載動(dòng)態(tài)調(diào)整數(shù)據(jù)庫連接池參數(shù),連接池參數(shù)設(shè)置過高,易造成資源浪費(fèi),設(shè)置過小,影響并發(fā)訪問數(shù),連接參數(shù)的設(shè)置效果差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本發(fā)明的一個(gè)目的在于提出一種連接參數(shù)的動(dòng)態(tài)設(shè)置方法,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
本發(fā)明的另一個(gè)目的在于提出一種連接參數(shù)的動(dòng)態(tài)設(shè)置裝置。
為達(dá)到上述目的,本發(fā)明第一方面實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法,應(yīng)用于數(shù)據(jù)庫連接池,包括:獲取所述數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn);獲取在所述當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上所述連接參數(shù)的實(shí)際連接值,并根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算所述連接參數(shù)的估計(jì)連接值;獲取所述數(shù)據(jù)庫所在服務(wù)器在所述當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù);根據(jù)所述負(fù)載指數(shù)、所述當(dāng)前連接值及所述估計(jì)連接值對(duì)所述數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
在本發(fā)明的一個(gè)實(shí)施例中,所述根據(jù)所述負(fù)載指數(shù)、所述當(dāng)前連接值及所述估計(jì)連接值對(duì)所述數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,包括:
對(duì)所述負(fù)載指數(shù)、所述當(dāng)前連接值及所述估計(jì)連接值進(jìn)行運(yùn)算處理,得到目標(biāo)連接值;
根據(jù)所述目標(biāo)連接值對(duì)所述數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取在所述當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上所述連接參數(shù)的實(shí)際連接值,包括:
從日志文件中獲取在所述當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上所述連接參數(shù)的實(shí)際連接值。
在本發(fā)明的一個(gè)實(shí)施例中,通過以下步驟配置所述日志文件:
將所述至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入所述日志文件以配置所述日志文件。
在本發(fā)明的一個(gè)實(shí)施例中,所述根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算所述連接參數(shù)的估計(jì)連接值,包括:
對(duì)所述至少一個(gè)的實(shí)際連接值加權(quán)迭代處理,以計(jì)算所述連接參數(shù)的估計(jì)連接值。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取所述數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),包括:
將所述數(shù)據(jù)庫所在服務(wù)器在所述當(dāng)前時(shí)間點(diǎn)上的實(shí)際請(qǐng)求連接數(shù),和所述服務(wù)器所能承載的最大請(qǐng)求連接數(shù)的比值作為所述負(fù)載指數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,還包括:
根據(jù)所述當(dāng)前時(shí)間點(diǎn)和所述目標(biāo)連接值對(duì)日志文件進(jìn)行更新。
本發(fā)明第一方面實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法,通過獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),并根據(jù)在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值,獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),以及根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
為達(dá)到上述目的,本發(fā)明第二方面實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置裝置,應(yīng)用于數(shù)據(jù)庫連接池,包括:第一獲取模塊,用于獲取所述數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn);第二獲取模塊,用于獲取在所述當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上所述連接參數(shù)的實(shí)際連接值;計(jì)算模塊,用于根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算所述連接參數(shù)的估計(jì)連接值;第三獲取模塊,用于獲取所述數(shù)據(jù)庫所在服務(wù)器在所述當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù);設(shè)置模塊,用于根據(jù)所述負(fù)載指數(shù)、所述當(dāng)前連接值及所述估計(jì)連接值對(duì)所述數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
在本發(fā)明的一個(gè)實(shí)施例中,所述設(shè)置模塊包括:
處理子模塊,用于對(duì)所述負(fù)載指數(shù)、所述當(dāng)前連接值及所述估計(jì)連接值進(jìn)行運(yùn)算處理,得到目標(biāo)連接值;
設(shè)置子模塊,用于根據(jù)所述目標(biāo)連接值對(duì)所述數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
在本發(fā)明的一個(gè)實(shí)施例中,第二獲取模塊具體用于:
從日志文件中獲取在所述當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上所述連接參數(shù)的實(shí)際連接值。
在本發(fā)明的一個(gè)實(shí)施例中,通過以下模塊配置所述日志文件:
寫入模塊,用于將所述至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入所述日志文件以配置所述日志文件。
在本發(fā)明的一個(gè)實(shí)施例中,所述計(jì)算模塊具體用于:
對(duì)所述至少一個(gè)的實(shí)際連接值加權(quán)迭代處理,以計(jì)算所述連接參數(shù)的估計(jì)連接值。
在本發(fā)明的一個(gè)實(shí)施例中,所述第三獲取模塊具體用于:
將所述數(shù)據(jù)庫所在服務(wù)器在所述當(dāng)前時(shí)間點(diǎn)上的實(shí)際請(qǐng)求連接數(shù),和所述服務(wù)器所能承載的最大請(qǐng)求連接數(shù)的比值作為所述負(fù)載指數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,還包括:
更新模塊,用于根據(jù)所述當(dāng)前時(shí)間點(diǎn)和所述目標(biāo)連接值對(duì)日志文件進(jìn)行更新。
本發(fā)明第二方面實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置裝置,通過獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),并根據(jù)在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值,獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),以及根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本發(fā)明一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法的流程示意圖;
圖2是本發(fā)明另一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法的流程示意圖;
圖3是本發(fā)明一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明另一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1是本發(fā)明一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法的流程示意圖。
該方法應(yīng)用于數(shù)據(jù)庫連接池中。
在一些應(yīng)用場景下,例如對(duì)于Web應(yīng)用系統(tǒng),應(yīng)用服務(wù)器一般為每一個(gè)客戶端(即一個(gè)會(huì)話,session)訪問開辟一個(gè)獨(dú)立線程,以提高應(yīng)用系統(tǒng)性能。此時(shí),如果數(shù)據(jù)庫訪問采用單線程的建立、使用、關(guān)閉,就會(huì)嚴(yán)重阻塞多線程執(zhí)行效率,并且,一個(gè)數(shù)據(jù)庫訪問的建立,會(huì)消耗較大的系統(tǒng)資源和時(shí)間,如果頻繁地建立和關(guān)閉數(shù)據(jù)庫訪問,會(huì)極大降低系統(tǒng)性能,因此,數(shù)據(jù)庫連接池應(yīng)運(yùn)而生。
一般地,當(dāng)數(shù)據(jù)庫連接池建立時(shí),初始化幾個(gè)數(shù)據(jù)連接,等待應(yīng)用程序調(diào)用。應(yīng)用程序調(diào)用一次,就取走一個(gè)數(shù)據(jù)連接,使用完了就歸還數(shù)據(jù)連接。當(dāng)連接池內(nèi)的數(shù)據(jù)連接取完了,就增加新數(shù)據(jù)連接,直到創(chuàng)建連接達(dá)到最大允許連接個(gè)數(shù)。若再取連接時(shí),等待一段時(shí)間,若還沒有空閑連接就會(huì)拋出異常。這就是一般數(shù)據(jù)庫連接池的工作原理,采用數(shù)據(jù)庫連接池技術(shù),能極大提升應(yīng)用系統(tǒng)的數(shù)據(jù)訪問性能。
參見圖1,該方法包括:
S11:獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn)。
在本發(fā)明的實(shí)施例中,當(dāng)前連接值可以例如為數(shù)據(jù)庫連接池當(dāng)前的數(shù)據(jù)連接的個(gè)數(shù),或者,當(dāng)前連接值也可以為任一個(gè)連接參數(shù)的連接值,在此不作限制。
其中,連接參數(shù)的個(gè)數(shù)可以為一個(gè)或者多個(gè)。即,本發(fā)明實(shí)施例可以對(duì)數(shù)據(jù)庫連接池中的一個(gè)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,同時(shí),也可以對(duì)數(shù)據(jù)庫連接池中的多個(gè)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,對(duì)此不作限制。
在本發(fā)明的實(shí)施例中,當(dāng)前時(shí)間點(diǎn)為獲取當(dāng)前連接值時(shí)的時(shí)間點(diǎn)。
可以在數(shù)據(jù)庫連接池在啟動(dòng)運(yùn)行的過程中,獲取數(shù)據(jù)庫連接池的至少一個(gè)連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),以實(shí)現(xiàn)后續(xù)對(duì)當(dāng)前連接值進(jìn)行動(dòng)態(tài)設(shè)置。
S12:獲取在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值,并根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值。
可選地,可以從日志文件中獲取在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值。
其中,日志文件可以是預(yù)先配置的。具體可以采用統(tǒng)計(jì)的方式配置日志文件,例如,由后臺(tái)人員對(duì)數(shù)據(jù)庫連接池在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)進(jìn)行統(tǒng)計(jì),得到連接參數(shù)在至少一個(gè)時(shí)間點(diǎn)中每個(gè)時(shí)間點(diǎn)上的實(shí)際連接值,將該實(shí)際連接值和對(duì)應(yīng)的時(shí)間點(diǎn)對(duì)應(yīng)保存在日志文件中,以配置日志文件,或者,也可以采用機(jī)器學(xué)習(xí)的方式配置日志文件,例如,用網(wǎng)頁相關(guān)技術(shù)如爬蟲技術(shù)等從數(shù)據(jù)庫連接池所在的后臺(tái)服務(wù)器系統(tǒng)上得到連接參數(shù)在至少一個(gè)時(shí)間點(diǎn)中每個(gè)時(shí)間點(diǎn)上的實(shí)際連接值,以配置日志文件。
進(jìn)一步地,在獲取到至少一個(gè)的實(shí)際連接值后,可以根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值。
在本發(fā)明的實(shí)施例中,該估計(jì)連接值用于對(duì)當(dāng)前連接值進(jìn)行動(dòng)態(tài)設(shè)置。
可選地,可以對(duì)至少一個(gè)的實(shí)際連接值加權(quán)迭代處理,以計(jì)算連接參數(shù)的估計(jì)連接值。
S13:獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù)。
可以理解的是,根據(jù)服務(wù)器的工作機(jī)制,在不同的時(shí)間點(diǎn)上,服務(wù)器的負(fù)載指數(shù)可以不同或者相同。
可選地,可以將數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的實(shí)際請(qǐng)求連接數(shù),和服務(wù)器所能承載的最大請(qǐng)求連接數(shù)的比值作為負(fù)載指數(shù)。
S14:根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
可選地,根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,包括:對(duì)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值進(jìn)行運(yùn)算處理,得到目標(biāo)連接值;根據(jù)目標(biāo)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
由于將數(shù)據(jù)庫所在服務(wù)器的負(fù)載指數(shù)納入連接參數(shù)動(dòng)態(tài)設(shè)置的依據(jù),實(shí)現(xiàn)了結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
本實(shí)施例中,通過獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),并根據(jù)在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值,獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),以及根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
圖2是本發(fā)明另一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置方法的流程示意圖。
參見圖2,該方法包括:
S201:將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入日志文件以配置日志文件。
其中,日志文件可以是預(yù)先配置的。具體可以采用統(tǒng)計(jì)的方式配置日志文件,例如,由后臺(tái)人員對(duì)數(shù)據(jù)庫連接池在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)進(jìn)行統(tǒng)計(jì),得到連接參數(shù)在至少一個(gè)時(shí)間點(diǎn)中每個(gè)時(shí)間點(diǎn)上的實(shí)際連接值,將該實(shí)際連接值和對(duì)應(yīng)的時(shí)間點(diǎn)對(duì)應(yīng)保存在日志文件中,以配置日志文件,或者,也可以采用機(jī)器學(xué)習(xí)的方式配置日志文件,例如,用網(wǎng)頁相關(guān)技術(shù)如爬蟲技術(shù)等從數(shù)據(jù)庫連接池所在的后臺(tái)服務(wù)器系統(tǒng)上得到連接參數(shù)在至少一個(gè)時(shí)間點(diǎn)中每個(gè)時(shí)間點(diǎn)上的實(shí)際連接值,以配置日志文件。
通過將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入日志文件以配置日志文件,能夠?qū)?shù)據(jù)庫連接池的歷史時(shí)間點(diǎn)的連接參數(shù)進(jìn)行統(tǒng)計(jì),以便后續(xù)根據(jù)歷史時(shí)間點(diǎn)的連接參數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,由于將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值納入考量范疇,能夠有效減小設(shè)置誤差,在保證并發(fā)訪問數(shù)的情況下避免了資源浪費(fèi)。
S202:獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn)。
在本發(fā)明的實(shí)施例中,當(dāng)前連接值可以例如為數(shù)據(jù)庫連接池當(dāng)前的數(shù)據(jù)連接的個(gè)數(shù),或者,當(dāng)前連接值也可以為任一個(gè)連接參數(shù)的連接值,在此不作限制。
其中,連接參數(shù)的個(gè)數(shù)可以為一個(gè)或者多個(gè)。即,本發(fā)明實(shí)施例可以對(duì)數(shù)據(jù)庫連接池中的一個(gè)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,同時(shí),也可以對(duì)數(shù)據(jù)庫連接池中的多個(gè)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,對(duì)此不作限制。
在本發(fā)明的實(shí)施例中,當(dāng)前時(shí)間點(diǎn)為獲取當(dāng)前連接值時(shí)的時(shí)間點(diǎn)。
可以在數(shù)據(jù)庫連接池在啟動(dòng)運(yùn)行的過程中,獲取數(shù)據(jù)庫連接池的至少一個(gè)連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),以實(shí)現(xiàn)后續(xù)對(duì)當(dāng)前連接值進(jìn)行動(dòng)態(tài)設(shè)置。
S203:從日志文件中獲取在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值。
S204:對(duì)至少一個(gè)的實(shí)際連接值加權(quán)迭代處理,以計(jì)算連接參數(shù)的估計(jì)連接值。
在本發(fā)明的實(shí)施例中,加權(quán)迭代處理算法可以例如為平滑指數(shù)預(yù)測(cè)算法,公式如下:
其中,Link(tk)表示在時(shí)間點(diǎn)tk上數(shù)據(jù)庫連接池中的連接參數(shù)的估計(jì)連接值,表示在時(shí)間點(diǎn)tk上數(shù)據(jù)庫連接池中的連接參數(shù)的實(shí)際連接值,α∈[0,1]為調(diào)節(jié)因子,α可取經(jīng)驗(yàn)值0.6。其中的Link(tk)又可以通過在時(shí)間點(diǎn)tk-1上的估計(jì)連接值和實(shí)際連接值加權(quán)迭代計(jì)算得出。
由于對(duì)至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值進(jìn)行加權(quán)迭代處理,納入考量范疇,能夠有效減小每一個(gè)時(shí)間點(diǎn)上連接參數(shù)的設(shè)置誤差,提升連接參數(shù)的設(shè)置效果。
S205:獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù)。
可選地,假設(shè)數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的實(shí)際請(qǐng)求連接數(shù)為m',服務(wù)器所能承載的最大請(qǐng)求連接數(shù)為m,則根據(jù)下述公式得到服務(wù)器的負(fù)載指數(shù)為:
loadFactor(server)=m'/m;
本步驟中,通過計(jì)算得到服務(wù)器的負(fù)載指數(shù),可以不僅考慮在當(dāng)前時(shí)間點(diǎn)上的連接參數(shù)的估計(jì)連接值,而且綜合考慮服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),進(jìn)一步提升連接參數(shù)的設(shè)置效果。
S206:對(duì)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值進(jìn)行運(yùn)算處理,得到目標(biāo)連接值。
在本發(fā)明的實(shí)施例中,目標(biāo)連接值為通過上述步驟確定出的最佳的連接值,即將數(shù)據(jù)庫連接池的連接參數(shù)的值設(shè)置為目標(biāo)連接值后,能夠提升連接參數(shù)的設(shè)置效果。
進(jìn)一步地,可以通過下述公式進(jìn)行運(yùn)算處理:
其中,α、β∈(0,1)且α+β=1,為調(diào)節(jié)因子,可以根據(jù)經(jīng)驗(yàn)取權(quán)重值或者,也可以取其他權(quán)重值,可以根據(jù)數(shù)據(jù)庫連接池的接入量幅度動(dòng)態(tài)調(diào)整調(diào)節(jié)因子,在此不作限制。
本步驟中,通過根據(jù)數(shù)據(jù)庫連接池的接入量幅度確定調(diào)節(jié)因子的值,在不同的接入量幅度下采用不同數(shù)值的調(diào)節(jié)因子對(duì)估計(jì)值和負(fù)載指數(shù)進(jìn)行運(yùn)算處理,能夠有效提升連接參數(shù)設(shè)置的靈活性,提升該方法在大規(guī)模集中接入量的情況下的適用性。
S207:根據(jù)目標(biāo)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
在本發(fā)明的實(shí)施例中,可以在任一個(gè)時(shí)間點(diǎn)上采用上述方法獲取目標(biāo)連接值,以實(shí)現(xiàn)動(dòng)態(tài)對(duì)連接參數(shù)進(jìn)行設(shè)置,能夠保證連接參數(shù)設(shè)置的時(shí)效性,提升用戶體驗(yàn)。
S208:根據(jù)當(dāng)前時(shí)間點(diǎn)和目標(biāo)連接值對(duì)日志文件進(jìn)行更新。
在本發(fā)明的實(shí)施例中,在每次對(duì)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置后,可以根據(jù)當(dāng)前時(shí)間點(diǎn)和當(dāng)前時(shí)間點(diǎn)上的目標(biāo)連接值對(duì)日志文件進(jìn)行更新,能夠?qū)崿F(xiàn)對(duì)日志文件中歷史時(shí)間點(diǎn)上實(shí)際連接值進(jìn)行更新,進(jìn)一步提升連接參數(shù)的設(shè)置效果。
本實(shí)施例中,通過將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入日志文件以配置日志文件,能夠?qū)?shù)據(jù)庫連接池的歷史時(shí)間點(diǎn)的連接參數(shù)進(jìn)行統(tǒng)計(jì),以便后續(xù)根據(jù)歷史時(shí)間點(diǎn)的連接參數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,由于將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值納入考量范疇,能夠有效減小設(shè)置誤差,在保證并發(fā)訪問數(shù)的情況下避免了資源浪費(fèi)。由于對(duì)至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值進(jìn)行加權(quán)迭代處理,納入考量范疇,能夠有效減小每一個(gè)時(shí)間點(diǎn)上連接參數(shù)的設(shè)置誤差,提升連接參數(shù)的設(shè)置效果。通過根據(jù)數(shù)據(jù)庫連接池的接入量幅度確定調(diào)節(jié)因子的值,在不同的接入量幅度下采用不同數(shù)值的調(diào)節(jié)因子對(duì)估計(jì)值和負(fù)載指數(shù)進(jìn)行運(yùn)算處理,能夠有效提升連接參數(shù)設(shè)置的靈活性,提升該方法在大規(guī)模集中接入量的情況下的適用性。實(shí)現(xiàn)動(dòng)態(tài)對(duì)連接參數(shù)進(jìn)行設(shè)置,能夠保證連接參數(shù)設(shè)置的時(shí)效性,提升用戶體驗(yàn)。在每次對(duì)連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置后,可以根據(jù)當(dāng)前時(shí)間點(diǎn)和當(dāng)前時(shí)間點(diǎn)上的目標(biāo)連接值對(duì)日志文件進(jìn)行更新,能夠?qū)崿F(xiàn)對(duì)日志文件中歷史時(shí)間點(diǎn)上實(shí)際連接值進(jìn)行更新,進(jìn)一步提升連接參數(shù)的設(shè)置效果。通過獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),并根據(jù)在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值,獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),以及根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
圖3是本發(fā)明一實(shí)施例提出的連接參數(shù)的動(dòng)態(tài)設(shè)置裝置的結(jié)構(gòu)示意圖。該連接參數(shù)的動(dòng)態(tài)設(shè)置裝置300可以通過軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)。
參見圖3,該連接參數(shù)的動(dòng)態(tài)設(shè)置裝置300可以包括:第一獲取模塊310、第二獲取模塊320、計(jì)算模塊330、第三獲取模塊340,以及設(shè)置模塊350。其中,
第一獲取模塊310,用于獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn)。
第二獲取模塊320,用于獲取在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值。
計(jì)算模塊330,用于根據(jù)至少一個(gè)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值。
第三獲取模塊340,用于獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù)。
設(shè)置模塊350,用于根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
一些實(shí)施例中,參見圖4,該連接參數(shù)的動(dòng)態(tài)設(shè)置裝置300還可以包括:
可選地,設(shè)置模塊350包括:
處理子模塊351,用于對(duì)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值進(jìn)行運(yùn)算處理,得到目標(biāo)連接值。
設(shè)置子模塊352,用于根據(jù)目標(biāo)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置。
可選地,第二獲取模塊320具體用于:
從日志文件中獲取在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值。
寫入模塊360,用于將至少一個(gè)時(shí)間點(diǎn)上的連接參數(shù)的實(shí)際連接值寫入日志文件以配置日志文件。
可選地,計(jì)算模塊330具體用于:
對(duì)至少一個(gè)的實(shí)際連接值加權(quán)迭代處理,以計(jì)算連接參數(shù)的估計(jì)連接值。
可選地,第三獲取模塊340具體用于:
將數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的實(shí)際請(qǐng)求連接數(shù),和服務(wù)器所能承載的最大請(qǐng)求連接數(shù)的比值作為負(fù)載指數(shù)。
更新模塊370,用于根據(jù)當(dāng)前時(shí)間點(diǎn)和目標(biāo)連接值對(duì)日志文件進(jìn)行更新。
需要說明的是,前述圖1-圖2實(shí)施例中對(duì)連接參數(shù)的動(dòng)態(tài)設(shè)置方法實(shí)施例的解釋說明也適用于該連接參數(shù)的動(dòng)態(tài)設(shè)置裝置,其實(shí)現(xiàn)原理類似,此處不再贅述。
本實(shí)施例中,通過獲取數(shù)據(jù)庫連接池的連接參數(shù)的當(dāng)前連接值,以及當(dāng)前時(shí)間點(diǎn),并根據(jù)在當(dāng)前時(shí)間點(diǎn)之前的至少一個(gè)時(shí)間點(diǎn)上連接參數(shù)的實(shí)際連接值計(jì)算連接參數(shù)的估計(jì)連接值,獲取數(shù)據(jù)庫所在服務(wù)器在當(dāng)前時(shí)間點(diǎn)上的負(fù)載指數(shù),以及根據(jù)負(fù)載指數(shù)、當(dāng)前連接值及估計(jì)連接值對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,能夠?qū)崿F(xiàn)結(jié)合連接參數(shù)的估計(jì)連接值和負(fù)載指數(shù)對(duì)數(shù)據(jù)庫連接池的連接參數(shù)進(jìn)行動(dòng)態(tài)設(shè)置,有效避免數(shù)據(jù)庫所在服務(wù)器過載,且提升連接參數(shù)的設(shè)置效果。
需要說明的是,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性。此外,在本發(fā)明的描述中,除非另有說明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。