當前位置:首頁 » 數據倉庫 » 如何在應用中配置連接池
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何在應用中配置連接池

發布時間: 2022-09-21 07:02:46

⑴ weblogic連接池怎麼配置

1、配置連接池 通過http://10.10.15.253:7001/console進入管理控制台---www.bianceng.cn
在左側菜單中依次進入mydomain(自定義的域名稱)-服務-JDBC-連接緩沖池 點擊「配置新的 JDBC Connection Pool... 」 數據類型選擇:Oracle
資料庫驅動程序選擇:Oracle's Driver (Thin) Version:9.0.1,0.2.0,10 點擊右下角的「繼續」
在名稱中寫入想要設置的連接池名稱(本例為:mpcConnection) 資料庫名稱:要訪問的資料庫名稱
主機名:寫入資料庫伺服器的主機名稱或IP地址 埠號默認為:1521
資料庫用戶名稱、密碼根據具體情況填寫 點擊「繼續」
在下一頁中點擊「測試驅動程序配置」顯示「連接成功」 點擊「創建和部署」
在新頁面的列表中出現mpcConnection的配置項 連接池配置完畢 2、配置JDBC數據源
在管理控制台左側菜單中依次進入mydomain(自定義的域名稱)-服務-JDBC-數據源
點擊「配置新的 JDBC Data Source」
在名稱中寫入要配置的數據源名稱(本例:mpcConnection) 在JNDI名稱中寫入訪問的名字(本例:mpc/ora9) 點擊「繼續」
在緩沖池名稱中選擇mpcConnection 點擊「繼續」、「創建」
在列表中出現mpcConnection配置項 數據源配置完畢

⑵ 如何合理設置連接池的大小

先看幾個問題,再看具體內容:
1) 為什麼要合理設置連接池的大小
2) 伺服器端的連接配置。最大允許多少連接?是否主動斷開連接?。Redis和mc配置基本一致。
3) 客戶端連接池應該如何設置?
4) JedisPool設置參數推薦。

1、DB端連接數過大的問題,目前很普遍存在。
在伺服器端我們經常可以看到db上存在大量的tcp連接,而通過ss或者netstat命令查看,發現大量的連接處於established狀態。
進一步通過redis的client list命令發現,很多連接的idle時間都很大,這意味著很多連接長時間沒有活動和傳出數據。
伺服器端維持很大的連接數,一方面需要消耗很多的進程資源,對於單進程的redis或者twemproxy,需要佔用進程的調度時間;
另外,過多的空閑連接數對於db的容量評估也帶來錯誤性的判斷。

2、redis/twemproxy和mc的connection timeout
目前在伺服器端都沒有設置任何連接超時的參數,不用擔心伺服器端主動斷開連接。
因而需要客戶端程序主動的釋放不再使用的連接和連接池中長時間空閑的連接。

3、redis/mc最大連接數
redis配置中最大允許1w個連接。
mc配置中最大允許接受65535個連接。
當應用程序中的並發連接數超過redis/mc伺服器端的允許的連接數時,對redis/mc進行擴容為最佳方案,保證db能夠提供高性能服務。

4、客戶端連接池的配置要點。
1) 連接池的大小。單個應用程序中,介面的並發的連接數的1.5倍足夠滿足需求。
2) 保持一定的空閑連接數,這樣可以保證客戶端可快速的獲取連接對象。
3) 合理設置空閑接的回收時間。避免客戶端維持大量的空閑連接。
4) 定時檢查長連接對象的有效性。主要是防止網路抖動或者db端出現異常時主動關閉連接。

5、JedisPool Config推薦的設置。
jedipool連接池配置推薦的設置(適合v2.5+版本,咨詢了用戶團隊的開發人員):
// 設置最大連接數,(根據並發請求合理設置)。
config.setMaxTotal(100);
// 設置最大空閑連接數,(根據並發請求合理設置)
config.setMaxIdle(20);
// 多長空閑時間之後回收空閑連接
setMinEvictableIdleTimeMillis(60000);
// 設置最小空閑連接數或者說初始化連接數
config.setMinIdle(10);
// 設置最大等待時間
config.setMaxWaitMillis(500);
// 跟驗證有關
config.setTestOnBorrow(true);
// 跟驗證有關
config.setTestOnReturn(false);
// 啟動空閑連接的測試
config.setTestWhileIdle(false);

⑶ ECLIPSE中配置連接池

1.將資料庫驅動程序的JAR文件放在Tomcat的 common/lib 中;
2.在server.xml中設置數據源,以Mysql資料庫為例,如下:
在<GlobalNamingResources> </GlobalNamingResources>節點中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
屬性說明:name,數據源名稱,通常取」jdbc/XXX」的格式;
type,」javax.sql.DataSource」;
password,資料庫用戶密碼;
driveClassName,資料庫驅動;
maxIdle,最大空閑數,資料庫連接的最大空閑時間。超過空閑時間,資料庫連
接將被標記為不可用,然後被釋放。設為0表示無限制。
MaxActive,連接池的最大資料庫連接數。設為0表示無限制。
maxWait ,最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示
無限制。
3.在你的web應用程序的web.xml中設置數據源參考,如下:
在<web-app></web-app>節點中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子節點說明: description,描述信息;
res-ref-name,參考數據源名字,同上一步的屬性name;
res-type,資源類型,」javax.sql.DataSource」;
res-auth,」Container」;
res-sharing-scope,」Shareable」;
4.在web應用程序的context.xml中設置數據源鏈接,如下:
在<Context></Context>節點中加入,
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
屬性說明:name,同第2步和第3步的屬性name值,和子節點res-ref-name值;
type,同樣取」javax.sql.DataSource」;
global,同name值。

至此,設置完成,下面是如何使用資料庫連接池。
1.建立一個連接池類,DBPool.java,用來創建連接池,代碼如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}

2.在要用到資料庫操作的類或jsp頁面中,用DBPool.getPool().getConnection(),獲得一個 Connection對象,就可以進行資料庫操作,最後別忘了對Connection對象調用close()方法,注意:這里不會關閉這個 Connection,而是將這個Connection放回資料庫連接池。
參考資料:網路搜索。

⑷ MySql資料庫連接池如何配置

連接先建立一些連接,並且這些連接允許共享,因此這樣就節省了每次連接的時間開銷。Mysql資料庫為例,連接池在Tomcat中的配置與使用。
1、創建資料庫Student,表student
2、配置server.xml文件。Tomcat安裝目錄下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定連接池的名稱
type:指定連接池的類,他負責連接池的事務處理
url:指定要連接的資料庫
driverClassName:指定連接資料庫使用的驅動程序
username:資料庫用戶名
password:資料庫密碼
maxWait:指定最大建立連接等待時間,如果超過此時間將接到異常
maxIdle:指定連接池中連接的最大空閑數
maxActive:指定連接池最大連接數
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql資料庫連接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
與server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、測試
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//檢索指定的對象,返回此上下文的一個新實例
pool = (DataSource)env.lookup("jdbc/DBPool");
//獲得資料庫連接池
if(pool==null){out.printl("找不到指定的連接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}

⑸ 在C#中如何使用連接池

資料庫連接池在初始化時將創建一定數量的資料庫連接放到連接池中,這些資料庫連接的數量是由最小資料庫連接數來設定的。無論這些資料庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數量。連接池的最大資料庫連接數量限定了這個連接池能佔有的最大連接數,當應用程序向連接池請求的連接數超過最大連接數量時,這些請求將被加入到等待隊列中。

⑹ 如何在applicationContext.xml中配置連接池 需要用到哪些jar包

<!--連接池中保留的最小連接數。-->
<property name="minPoolSize">
<value>5</value>
</property>

<!--連接池中保留的最大連接數。Default: 15 -->
<property name="maxPoolSize">
<value>30</value>
</property>

<!--初始化時獲取的連接數,取值應在minPoolSize與maxPoolSize之間。Default: 3 -->
<property name="initialPoolSize">
<value>10</value>
</property>

<!--最大空閑時間,60秒內未使用則連接被丟棄。若為0則永不丟棄。Default: 0 -->
<property name="maxIdleTime">
<value>60</value>
</property>

<!--當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數。Default: 3 -->
<property name="acquireIncrement">
<value>5</value>
</property>

<!--JDBC的標准參數,用以控制數據源內載入的PreparedStatements數量。但由於預緩存的statements
屬於單個connection而不是整個連接池。所以設置這個參數需要考慮到多方面的因素。
如果maxStatements與maxStatementsPerConnection均為0,則緩存被關閉。Default: 0-->
<property name="maxStatements">
<value>0</value>
</property>

<!--每60秒檢查所有連接池中的空閑連接。Default: 0 -->
<property name="idleConnectionTestPeriod">
<value>60</value>
</property>

<!--定義在從資料庫獲取新連接失敗後重復嘗試的次數。Default: 30 -->
<property name="acquireRetryAttempts">
<value>30</value>
</property>

⑺ dbcp連接池配置詳解

首先,明確連接、活動連接(連接正被使用)、空閑連接的概念

一、創建連接

1、初始化 2、空閑連接低於最小空閑minIdle

二、銷毀連接

1、空閑連接數目高於最大空閑 2、活動連接被遺棄

三、回收行為

1、空閑連接回收器(定時執行)2、連接回收器(maxwait後觸發)

initialSize 初始化連接數,即連接池啟動時池子中的連接數目

maxActive 最大活動連接數,即連接池中可同時連接的最大數目

minIdle 最小空閑連接,連接池中最少的空閑的連接數,

低於這個數量時,意味著連接不夠用了,會被創建新的連接

默認為0,該參數越接近maxIdle,性能越好,因為連接的創建和銷毀,都是需要消耗資源的;

不宜太大,因為在機器很空閑的時候,也會創建低於minidle個數的連接,類似於jvm參數中的Xmn設置。

maxIdle 最大空閑連接

超過此參數時空閑連接將被釋放,如果設置為負數表示不限制

默認為8個,maxIdle不能設置太小,因為假如在高負載的情況下,連接的打開時間比關閉的時間快,會引起連接池中idle的個數上升超過maxIdle,而造成頻繁的連接銷毀和創建,類似於jvm參數中的Xmx設置。

maxIdle 最大空閑連接

超過此參數時空閑連接將被釋放,如果設置為負數表示不限制

默認為8個,maxIdle不能設置太小,因為假如在高負載的情況下,連接的打開時間比關閉的時間快,會引起連接池中idle的個數上升超過maxIdle,而造成頻繁的連接銷毀和創建,類似於jvm參數中的Xmx設置

maxWait 請求連接時,最長的等待時間。

單位ms,當沒有可用連接時,連接池會等待連接釋放,超過該時間限制會拋出異常,如果設置-1表示無限等待(默認為無限)。

⑻ 如何合理設置連接池的大小

客戶端連接池的配置要點。
1) 連接池的大小。單個應用程序中,介面的並發的連接數的1.5倍足夠滿足需求。
2) 保持一定的空閑連接數,這樣可以保證客戶端可快速的獲取連接對象。
3) 合理設置空閑接的回收時間。避免客戶端維持大量的空閑連接。
4) 定時檢查長連接對象的有效性。主要是防止網路抖動或者db端出現異常時主動關閉連接。

⑼ 如何配置hibernate 連接池

三種連接都是以連接MySQl為例。

<!-- JDBC驅動程序 -->
<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 資料庫用戶名 -->
<property name="connection.username">root</property> <!-- 資料庫密碼 -->
<property name="connection.password">8888</property>

上面的一段配置,在c3p0和dbcp中,都是必需的,因為hibernate會根據上述的配置來生成connections,再交給c3p0或dbcp管理.但是,proxool則不能,雖然說服文檔上說proxool也可以和hibernate結合,但我按照官方文檔上的說明怎麼配也出錯,而且,到了sun和hibernat有的官方網站上問了幾天,都沒有一個人回復。後來我只能讓proxool自身來生成連接,這在下面再講。

1 C3P0

只需在hibernate.cfg.xml中加入
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.time_out">1800</property>
<property name="c3p0.max_statement">50</property>

還有在classespath中加入c3p0-0.8.4.5.jar

2 dbcp

在hibernate.cfg.xml中加入

<property name="dbcp.maxActive">100</property>
<property name="dbcp.whenExhaustedAction">1</property>
<property name="dbcp.maxWait">60000</property>
<property name="dbcp.maxIdle">10</property>

<property name="dbcp.ps.maxActive">100</property>
<property name="dbcp.ps.whenExhaustedAction">1</property>
<property name="dbcp.ps.maxWait">60000</property>
<property name="dbcp.ps.maxIdle">10</property>

還有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool

在hibernate.cfg.xml中加入

<property name="proxool.pool_alias">pool1</property>
<property name="proxool.xml">ProxoolConf.xml</property>
<property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>

然後,在和hibernate.cfg.xml同一個目錄下,加一個ProxoolConf.xml文件,內容為

<?xml version="1.0" encoding="utf-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>pool1</alias>
<!--proxool只能管理由自己產生的連接-->
<driver-url>jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root"/>
<property name="password" value="8888"/>
</driver-properties>
<!-- proxool自動偵察各個連接狀態的時間間隔(毫秒),偵察到空閑的連接就馬上回收,超時的銷毀-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<!-- 指因未有空閑連接可以分配而在隊列中等候的最大請求數,超過這個請求數的用戶連接就不會被接受-->
<maximum-new-connections>20</maximum-new-connections>
<!-- 最少保持的空閑連接數-->
<prototype-count>5</prototype-count>
<!-- 允許最大連接數,超過了這個連接,再有請求時,就排在隊列中等候,最大的等待請求數由maximum-new-connections決定-->
<maximum-connection-count>100</maximum-connection-count>
<!-- 最小連接數-->
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely>

並在classespath中加入proxool-0.8.3.jar

結論:

由於在hibernate3.0中,已經不再支持dbcp了,hibernate的作者在hibernate.org中,明確指出在實踐中發現dbcp有BUG,在某些種情會產生很多空連接不能釋放,所以拋棄了對dbcp的支持。我不知是否在dbcp最新版本中解決了這個問題,我以前在一個訪問量不大的項目中用過dbcp,運行了一年多都沒出現問題。不過在網上的確也有不少網友指出dbcp在大型的應用中會出現不穩定的情況。所以在真相未經證實的情況下,我覺得對dbcp持慎重的態度。

至於c3p0,有評論說它的演算法不是最優的,而且,我在matrix中,見到有網友做了一個實驗,在同一項目中分別用了幾個常用的連接池,然後測試其性能,發現c3p0佔用資源比較大,效率也不高。

所以,基於上述原因,我才花兩晚的時間去研究proxool的配置,proxool不少行家推薦使用,而且暫時來說,是負面評價是最少的一個。在三星中也有項目是用proxool的。

⑽ Mybatis如何配置連接池

mybatis 配置連接池

<!-- 配置數據源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 基本屬性 url、user、password -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ssmhello" />
<property name="username" value="root" />
<property name="password" value="2424246258" />
<property name="initialSize" value="1" />
<property name="minIdle" value="1" />
<property name="maxActive" value="20" />
<property name="maxWait" value="60000" />
<!-- 超過時間限制是否回收 -->
<property name="removeAbandoned" value="true" />
<!-- 超過時間限制多長; -->
<property name="removeAbandonedTimeout" value="180" />
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="300000" />
<!-- 用來檢測連接是否有效的sql,要求是一個查詢語句-->
<property name="validationQuery" value="SELECT 1" />
<!-- 申請連接的時候檢測 -->
<property name="testWhileIdle" value="true" />
<!-- 申請連接時執行validationQuery檢測連接是否有效,配置為true會降低性能 -->
<property name="testOnBorrow" value="false" />
<!-- 歸還連接時執行validationQuery檢測連接是否有效,配置為true會降低性能 -->
<property name="testOnReturn" value="false" />
</bean>