如何合理设置连接池的大小 如何合理设置连接池的大小

java\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u6700\u5927\u8fde\u63a5\u6570\u6700\u5c0f\u8fde\u63a5\u6570\u600e\u4e48\u8bbe\u7f6e

\u6700\u5927\u8fde\u63a5\u6570\uff1a\u8fd9\u4e2a\u8fde\u63a5\u6c60\u6700\u591a\u80fd\u6709\u51e0\u6761\u8fde\u63a5\uff0c\u5982\u679c\u521d\u59cb\u5316\u7684\u8fde\u63a5\u6570\u6ca1\u6709\u4e86\uff0c\u7528\u6237\u53ef\u4ee5\u521b\u5efa\uff0c\u4f46\u662f\u8981\u7ed9\u4e2a\u5224\u65ad\u4e0d\u80fd\u8d85\u8fc7\u6700\u5927\u8fde\u63a5\u6570\u3002
\u6700\u5c0f\u8fde\u63a5\u6570\uff1a\u5c31\u662f\u8fde\u63a5\u6c60\u521d\u59cb\u5316\u7684\u8fde\u63a5\uff08\u8fde\u63a5\u6c60\u521d\u59cb\u5316\u591a\u5c11\u6761\u8fde\u63a5\uff09

// \u8bbe\u7f6e\u6700\u5927\u8fde\u63a5\u6570\uff0c\uff08\u6839\u636e\u5e76\u53d1\u8bf7\u6c42\u5408\u7406\u8bbe\u7f6e\uff09\u3002
config.setMaxTotal(100);
// \u8bbe\u7f6e\u6700\u5927\u7a7a\u95f2\u8fde\u63a5\u6570\uff0c\uff08\u6839\u636e\u5e76\u53d1\u8bf7\u6c42\u5408\u7406\u8bbe\u7f6e\uff09
config.setMaxIdle(20);
// \u591a\u957f\u7a7a\u95f2\u65f6\u95f4\u4e4b\u540e\u56de\u6536\u7a7a\u95f2\u8fde\u63a5
setMinEvictableIdleTimeMillis(60000);
// \u8bbe\u7f6e\u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5\u6570\u6216\u8005\u8bf4\u521d\u59cb\u5316\u8fde\u63a5\u6570
config.setMinIdle(10);
// \u8bbe\u7f6e\u6700\u5927\u7b49\u5f85\u65f6\u95f4
config.setMaxWaitMillis(500);
// \u8ddf\u9a8c\u8bc1\u6709\u5173
config.setTestOnBorrow(true);
// \u8ddf\u9a8c\u8bc1\u6709\u5173
config.setTestOnReturn(false);
// \u542f\u52a8\u7a7a\u95f2\u8fde\u63a5\u7684\u6d4b\u8bd5
config.setTestWhileIdle(false);

\u5ba2\u6237\u7aef\u8fde\u63a5\u6c60\u7684\u914d\u7f6e\u8981\u70b9\u3002
1\uff09 \u8fde\u63a5\u6c60\u7684\u5927\u5c0f\u3002\u5355\u4e2a\u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u63a5\u53e3\u7684\u5e76\u53d1\u7684\u8fde\u63a5\u6570\u76841.5\u500d\u8db3\u591f\u6ee1\u8db3\u9700\u6c42\u3002
2\uff09 \u4fdd\u6301\u4e00\u5b9a\u7684\u7a7a\u95f2\u8fde\u63a5\u6570\uff0c\u8fd9\u6837\u53ef\u4ee5\u4fdd\u8bc1\u5ba2\u6237\u7aef\u53ef\u5feb\u901f\u7684\u83b7\u53d6\u8fde\u63a5\u5bf9\u8c61\u3002
3\uff09 \u5408\u7406\u8bbe\u7f6e\u7a7a\u95f2\u63a5\u7684\u56de\u6536\u65f6\u95f4\u3002\u907f\u514d\u5ba2\u6237\u7aef\u7ef4\u6301\u5927\u91cf\u7684\u7a7a\u95f2\u8fde\u63a5\u3002
4\uff09 \u5b9a\u65f6\u68c0\u67e5\u957f\u8fde\u63a5\u5bf9\u8c61\u7684\u6709\u6548\u6027\u3002\u4e3b\u8981\u662f\u9632\u6b62\u7f51\u7edc\u6296\u52a8\u6216\u8005db\u7aef\u51fa\u73b0\u5f02\u5e38\u65f6\u4e3b\u52a8\u5173\u95ed\u8fde\u63a5\u3002

先看几个问题,再看具体内容:
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);

  • 浠涔堟槸鏁版嵁搴杩炴帴姹
    绛旓細4. 閰嶇疆鍜岀伒娲绘 鏁版嵁搴撹繛鎺ユ睜閫氬父鎻愪緵涓板瘜鐨勯厤缃夐」锛屼互閫傚簲涓嶅悓鐨勫簲鐢ㄥ満鏅拰闇姹傘備緥濡傦紝寮鍙戜汉鍛樺彲浠ユ牴鎹渶瑕佽皟鏁杩炴帴姹犵殑澶у皬銆佽秴鏃璁剧疆銆佽礋杞藉潎琛$瓥鐣ョ瓑銆傛澶栵紝澶у鏁拌繛鎺ユ睜閮芥敮鎸佸绉嶆暟鎹簱绫诲瀷鍜岃繛鎺ユ柟寮忥紝浣垮緱瀹冧滑鍙互杞绘澗鍦伴泦鎴愬埌鍚勭搴旂敤绋嬪簭鍜屾灦鏋勪腑銆備緥濡傦紝鍦↗ava涓父鐢ㄧ殑鏁版嵁搴撹繛鎺ユ睜鏈塇ikari...
  • 鍙屾牳鍥涚嚎绋嬫暟鎹簱濡備綍鍋氫紭鍖
    绛旓細濡傛灉浣犺楂樺苟鍙戯紝寤鸿浣犲澶杩炴帴姹犲ぇ灏锛屾寚瀹歁axPoolCount =1000鎴栨槸鏇村ぇ锛堝ソ鍍忔槸杩欐牱鎷肩殑鍏蜂綋鏌sdn锛 杩炴帴姹犲搴旇繛鎺ュ瓧绗︿覆锛屽鏋滃瓧绗︿覆涓嶅悓锛屽皯涓涓┖鏍硷紝杩炴帴姹犻兘涓嶅悓 杩炴帴姹犲厑璁稿簲鐢ㄧ▼搴忎粠杩炴帴姹犱腑鑾峰緱涓涓繛鎺ュ苟浣跨敤杩欎釜杩炴帴锛岃屼笉闇瑕佷负姣忎竴涓繛鎺ヨ姹傞噸鏂板缓绔嬩竴涓繛鎺ャ備竴鏃︿竴涓柊鐨勮繛鎺ヨ...
  • 澶ф暟鎹敤浠涔堜腑闂翠欢璁剧疆鏁版嵁搴撹繛鎺ユ睜linux(鏁版嵁搴杩炴帴姹犲ぇ灏忚缃)
    绛旓細鏁版嵁搴撹繛鎺ユ槸涓绉嶆湁闄愮殑鏄傝吹鐨勮祫婧愶紝鏁版嵁搴撹繛鎺ュ奖鍝嶅埌绋嬪簭鐨勬ц兘鎸囨爣銆傛暟鎹簱杩炴帴姹姝f槸閽堝杩欎釜闂鎻愬嚭鏉ョ殑銆傛暟鎹簱杩炴帴姹犺礋璐e垎閰嶃佺鐞嗗拰閲婃斁鏁版嵁搴撹繛鎺ワ紝瀹冨厑璁稿簲鐢ㄧ▼搴忛噸澶嶄娇鐢ㄤ竴涓幇鏈夌殑鏁版嵁搴撹繛鎺ワ紝鑰屽啀涓嶆槸閲嶆柊寤虹珛涓涓紱閲婃斁绌洪棽鏃堕棿瓒呰繃鏈澶х┖闂叉椂闂寸殑鏁版嵁搴撹繛鎺ユ潵閬垮厤鍥犱负娌℃湁閲婃斁鏁 鎹簱杩炴帴...
  • java鍦ㄦ暟鎹鐞嗗鑷存暟鎹簱浜嬪姟瓒呮椂鏈夊摢浜涜В鍐虫柟妗?
    绛旓細1.澧炲姞鏁版嵁搴撹繛鎺ユ睜澶у皬锛氶氳繃澧炲姞鏁版嵁搴杩炴帴姹犵殑澶у皬锛屽彲浠ョ缉鐭繛鎺ユ睜涓┖闂茶繛鎺ョ殑绛夊緟鏃堕棿锛屼粠鑰屽噺灏戜簨鍔¤秴鏃剁殑鍙兘鎬с2.浼樺寲SQL璇彞锛氬SQL璇彞杩涜浼樺寲锛岄伩鍏嶄娇鐢ㄥ鏉傜殑鏌ヨ銆佽繃澶氱殑JOIN鎿嶄綔绛夊彲鑳藉鑷存ц兘涓嬮檷鐨勬搷浣溿3.鍒嗘壒澶勭悊锛氬皢澶ф暟鎹噺鐨勬暟鎹鐞嗕换鍔″垎鎴愬涓皬鎵规杩涜澶勭悊锛屾瘡涓壒娆′箣闂璁剧疆鍚堥...
  • node.js濡備綍閰嶇疆mongodb杩炴帴姹?
    绛旓細浣跨敤node-mongodb-native锛岃繖鏄畼鏂逛负nodejs鎻愪緵鐨勯┍ 鍔ㄣ傝繖涓簱鏈湰韬氨瀹炵幇浜唒ool绠$悊锛屾墍浠ヤ笉鐢ㄥ彟澶栬冭檻杩炴帴姹犮備娇鐢ㄤ笂鍙互閫氳繃閰嶇疆閾炬帴url鎴杝erver鐨勫睘鎬璁剧疆杩炴帴姹犲ぇ灏銆傚彲浠ュ湪绋嬪簭鍒濆鍖栨椂 鍒涘缓涓涓叏灞鐨勮闂甤lient锛屼篃鍙互鑷繁鍐嶅皝瑁呬竴娆°傛墍鏈夐氳繃杩欎釜client鐨勫彂鍑虹殑mongo鎿嶄綔璇锋眰锛岄┍鍔ㄥ簳灞傞兘浼氳嚜鍔...
  • c# .NET璁捐绯荤粺,鏁版嵁搴撶殑闂??
    绛旓細涓嬮潰閫氳繃涓涓▼搴忔潵鏄剧ず杩炴帴姹犵殑鎬ц兘浼樺娍銆傚湪搴旂敤姝ょ▼搴忚繃绋嬫垜浠鍏堝紩鐢⊿ystem.Data.SqlClinet鍜孲ystem.Text鍛藉悕绌洪棿銆 鑼冧緥绋嬪簭浠g爜濡備笅:01 public partial class _Default : System.Web.UI.Page 02 {03 protected void Page_Load(object sender, EventArgs e)04 {05 //璁剧疆杩炴帴姹犵殑鏈澶ц繛鎺ユ暟涓5,鏈灏忎负106...
  • pg鏁版嵁搴撶敤鎴杩炴帴涓嶄笂,閲嶅惎pg鏈嶅姟鍚庝細杩炴帴鎴愬姛
    绛旓細2. 杩炴帴璧勬簮鑰楀敖锛氬湪鏌愪簺鎯呭喌涓嬶紝濡傛灉鏁版嵁搴撹繛鎺ヨ祫婧愯鑰楀敖锛屾柊鐨勮繛鎺ュ皢鏃犳硶寤虹珛銆傚綋閲嶅惎pg鏈嶅姟鍚庯紝宸叉湁鐨勮繛鎺ヤ細琚噴鏀撅紝涓烘柊鐨勮繛鎺ヨ吘鍑鸿祫婧愶紝浠庤岃兘澶熸垚鍔熻繛鎺ャ3. 閰嶇疆閿欒锛氬彲鑳芥槸鐢变簬pg鏁版嵁搴撶殑閰嶇疆閿欒瀵艰嚧杩炴帴澶辫触銆傞噸鍚痯g鏈嶅姟浼氶噸鏂板姞杞介厤缃枃浠讹紝淇閰嶇疆閿欒锛屼娇杩炴帴鍙互鎴愬姛寤虹珛銆傛嫇灞曞唴瀹癸細姝ゅ...
  • c#socket杩炴帴缂撳瓨鐖嗕簡
    绛旓細棰樹富鏄惁鎯宠闂渃socket杩炴帴缂撳瓨鐖嗕簡鎬庝箞鍔炩濓紵浣跨敤杩炴帴姹锛屽鍔犺繛鎺ョ紦瀛澶у皬銆1銆佷娇鐢ㄨ繛鎺ユ睜锛氶氳繃浣跨敤杩炴帴姹犳妧鏈紝鍙互閲嶅鍒╃敤宸茬粡鍒涘缓鐨勮繛鎺ワ紝鑰屼笉鏄瘡娆¢渶瑕佽繛鎺ユ椂閮藉垱寤轰竴涓柊鐨勮繛鎺ャ傝繖鏍峰彲浠ユ湁鏁堝湴绠$悊杩炴帴缂撳瓨锛岄伩鍏嶅叾琚~婊°2銆佸鍔犺繛鎺ョ紦瀛樺ぇ灏忥細闇瑕佸鐞嗘洿澶氱殑骞跺彂杩炴帴锛屽彲浠ュ鍔燬ocket鐨勮繛鎺ョ紦瀛...
  • ...涓姤"瓒呮椂鏃堕棿宸插埌鈥︹﹁揪鍒颁簡鏈澶姹犲ぇ灏銆" 鎬庝箞瑙e喅??
    绛旓細2.2鏀瑰彉杩炴帴姹犵殑澶у皬 鍦ㄨ繛鎺ュ瓧绗︿覆鐨勫悗闈㈠姞涓婁互涓嬩唬鐮:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000 --- 浠ヤ笂鏄綉缁滀腑鎵剧殑锛屽叾瀹炲嚭鐜拌繖涓棶棰樹笉澶簲璇ワ紝鍥犱负open鍚庡繀椤昏close銆傚鏋滀綘璁や负open鍚庨兘close鐨勮瘽锛屼綘鏌ユ煡鏄笉鏄槸...
  • 濡備綍鍦 Go 璇█涓娇鐢 Redis 杩炴帴姹
    绛旓細閫氳繃鍙嶅鐨勬祴璇曪紝鍙戠幇 bug 鏄湁瑙勫緥鐨勶紝褰撶▼搴忕┖闂蹭竴浼氬悗锛屽啀杩涜杩炵画璇锋眰锛屼細鍙戠敓3娆″け璐ワ紝鐒跺悗涔嬪悗鐨勮姹傞兘鑳芥垚鍔燂紝鑰屾垜鐨杩炴帴姹犲ぇ灏忚缃鐨勬槸3銆傚啀杩涗竴姝ュ垎鏋愶紝绋嬪簭绌洪棽300绉 鍚庯紝鍐嶈姹傚氨浼氬け璐ワ紝鍙戠幇鎴戠殑 Redis server 閰嶇疆浜 timeout 300锛岃嚦姝わ紝闂灏辨竻妤氫簡銆傛槸杩炴帴瓒呮椂 Redis server 涓诲姩鏂紑浜...
  • 扩展阅读:波纹管连接方法图解 ... 连接池满了解决办法 ... excel所有图片统一大小 ... 多张图片统一设置大小 ... excel图片自适应大小 ... word全选图片统一大小 ... 木工二合一隐形连接件 ... word所有图片统一尺寸 ... 跨页ppt图片统一大小 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网