http连接池配置需要注意的地方

http连接池配置需要注意的地方,有需要的朋友可以参考下。


众所周知,httpclient是java开发中非常常见的一种访问网络资源的方式了。这里不再赘述httpclient强大的功能使用了,比如读取网页(HTTP/HTTPS)内容,以GET或者POST方式向网页提交参数,处理页面重定向,模拟输入用户名和口令进行登录,提交XML格式参数,通过HTTP上传文件,访问启用认证的页面以及httpclient在多线程下的使用.

这里说一下多线程模式下使用httpclient连接池的使用注意事项:

org.apache.http.impl.conn.PoolingClientConnectionManager;

使用这个类就可以使用httpclient连接池的功能了,其可以设置最大连接数和最大路由连接数。

 public final static int MAX_TOTAL_CONNECTIONS = 400; 
public final static int MAX_ROUTE_CONNECTIONS = 200; 
	cm = new PoolingClientConnectionManager();  
        cm.setMaxTotal(MAX_TOTAL_CONNECTIONS);  
        cm.setDefaultMaxPerRoute(MAX_ROUTE_CONNECTIONS); 

最大连接数就是连接池允许的最大连接数,最大路由连接数就是没有路由站点的最大连接数,比如:

  1. HttpHostgoogleResearch=newHttpHost("research.google.com",80);
  2. HttpHostwikipediaEn=newHttpHost("en.wikipedia.org",80);
  3. cm.setMaxPerRoute(newHttpRoute(googleResearch),30);
  4. cm.setMaxPerRoute(newHttpRoute(wikipediaEn),50);

并且可以设置httpclient连接等待请求等待时间,相应时间等。

说几个要注意点:

1.首先配置最大连接数和最大路由连接数,如果你要连接的url只有一个,两个必须配置成一样,否则只会取最小值。(这是个坑,默认最大连接是20,每个路由最大连接是2)

2.最好配置httpclient连接等待时间,和相应时间。否则就会一直等待。

httpParams = new BasicHttpParams();  
httpParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,CONNECT_TIMEOUT);  
httpParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, READ_TIMEOUT);  

3 httpclient必须releaseconnection,但不是abort。因为releaseconnection是归还连接到连接池,而abort是直接抛弃这个连接,而且占用连接池的数目。(一定要注意)
HttpGet httpGet = new HttpGet(searchurl);
httpGet.releaseConnection();
4 (一定要注意)httpclient设置的最大连接数绝对不能超过tomcat设置的最大连接数,否则tomcat的连接就会被httpclient连接池一直占用,直到系统挂掉。

5 可以使用tomcat的长连接和htppclient连接池和合理使用来增加系统响应速度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验三 交换机VLAN实验 1. 规划ip地址 PCA的ip 地址: 10.65.1.1 PCB的ip 地址: 10.66.1.1 PCC的ip 地址: 10.65.1.3 PCD的ip 地址: 10.66.1.3 SWA的ip 地址: 10.65.1.7 SWB的ip 地址: 10.65.1.8 SWA的f0/5~f0/7 vlan 2 ,f0/8为trunk SWB的f0/5~f0/7 valn 2 ,f0/1为trunk 用ping命令测试,从PCA和PCB到各点的连通情况。由于交换机初始化为vlan 1, 所以同网段的可以通。即PCA到PCC、SWA、SWB是通的,而PCB只与PCD通。 2.设置VLAN 双击SwitchA,改名SwitchA为SWA,建立2 个vlan,分别为2、3 switch>en switch#sh vlan switch#conf t switch(config)#hosthame SWA switch(config)#exit SWA#vlan database SWA(vlan)#vlan 2 SWA(vlan)#vlan 3 SWA(vlan)#exit 将SWA交换机的f0/5,f0/6,f0/7 加入到vlan 2 SWA(config)#int f0/5 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/6 SWA(config-if)#switchport access vlan 2 SWA(config-if)#int f0/7 SWA(config-if)#switchport access vlan 2 SWA(config-if)# end SWA#sh vlan 在SWB上与SWA上类似,将SWB交换机f0/5,f0/6,f0/7 加入到vlan 2。 3.测试可通性 从PCA到PCC测试: [root@PCA root]# ping 10.65.1.3 (通) 从PCA到PCB测试: [root@PCA root]# ping 10.66.1.1 (不通,因为不同网段,不同VLAN) 从PCB到PCD测试: [root@PCB root]# ping 10.66.1.3 (不通,要求trunk) 从PCA到SWA测试: [root@PCA root]# ping 10.65.1.7(通,同一网段,同在vlan 1) 从PCA到SWB测试: [root@PCA root]# ping 10.65.1.8(通,同一网段,同在vlan 1) 从SWA到PCA测试: SWA#ping 10.65.1.1 (通) 从SWA到PCB测试: SWA#ping 10.66.1.1 (不通,因为不同网段,不同VLAN) 从SWA到SWB测试: SWA#ping 10.65.1.8 (通) 4. 设置干线trunk 将连接两个交换机的端口设置成trunk。 SWA(config)#int f0/8 SWA(config-if)#switchport mode trunk SWA(config-if)#switchport trunk allowed vlan 1,2,3 SWA(config-if)#switchport trunk encap dot1q SWA(config-if)#end SWA#sh run SWB(config)#int f0/1 SWB(config-if)#switchport mode trunk SWB(config-if)#switchport trunk allowed vlan 1,2,3 SWB(config-if)#switchport trunk encap dot1q SWB(config-if)#end SWB#sh run 交换机创建trunk时默认allowed all,所以上面的trunk allowed 命令可以不 用。 dot1q是vlan中继协议(802.1q),由于正确设置了trunk,两个交换机间可以多 个vlan通过,所以PCA->PCC, PCB->PCD 可以通了。 [root@PCA root]# ping 10.65.1.3 (通,同在vlan 1) [root@PCB root]# ping 10.66.1.3(通,同在vlan 2) [root@PCA root]# ping 10.66.1.3 (不通,不同vlan需要路由) 5. 三个交换机的情况 再加入一个交换机switchC,将它串入switchA和switchB之间,连接方式: switchA:F0/8-->switchC:F0/3; switchC:F0/6-->switchB:F0/1 (1) 新加入的SwitchC 默认状态时,测试连通性。 从PCA->PCC,从PCB->PCD 测试: [root@PCA root]# ping 10.65.1.3 (不通) [root@PCB root]# ping 10.66.1.3 (不通) 由于新加入的交换机没有设置trunk,所有接口默认vlan 1,对于交换机而言, trunk 要成对出现,如果dot1q不能和另一端交换信息会自动down掉。 (2) 将交换机之间的连线都设置成trunk时,再测试连通性。 SWC(config)#int f0/3 SWC(config-if)#switchport mode trunk SWC(config-if)#switchport trunk encap dot1q SWC(config-if)#int f0/6 SWC(config-if)#switchport mode trunk SWC(config-if)#switchport trunk encap dot1q SWC(config-if)#end SWC#sh run 由于建立trunk时默认为trunk allowed vlan all,所以这里没设置。 现在有两条正确的trunk,再看一下联通情况: [root@PCA root]# ping 10.65.1.3 (通) [root@PCB root]# ping 10.66.1.3 (通) (3) 设置vtp VTP是vlan 传输协议,在VTP Server上配置的vlan 在条件允许条件下,可以 从VTP Client 端看到VTP Server上的vlan,并将自己端口加入到vlan中。 SWC(config)#vtp domain abc SWC(config)#vtp mode server SWC(config)#vtp password ok SWB(config)#vtp domain abc SWB(config)#vtp mode client SWB(config)#vtp password ok SWB#sh vlan SWA#sh vlan SWC#sh vlan 当口令和域名一致时,client端可以学习到server端的vlan,在VTP Server端还 可以有很多策略,这里只是说明最基本的问题。 VTP在企业、机关、学校的应用是很多的,在主交换机上设置好vlan以后,下级的 交换机不用再设置vlan,可以将client的某些端口添加到VTP Server中定义的vlan中 去,加强了管理。 名词解释: 什么是交换机的trunk功能   TRUNK是端口汇聚的意思,就是通过配置软件的设置,将2个或多个物理端口组合在一起成为一条逻辑的路径从而增加在交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。Trunk是一种封装技术,它是一条点到点的链路,链路的两端可以都是交换机,也可以是交换机和路由器,还可以是主机和交换机或路由器。基于端口汇聚(Trunk)功能,允许交换机与交换机、交换机与路由器、主机与交换机或路由器之间通过两个或多个端口并行连接同时传输以提供更高带宽、更大吞吐量, 大幅度提供整个网络能力。   “TRUNK”的三个意思 不要混淆在技术领域中把TRUNK翻译为中文是“主干、干线、中继线、长途线” ,不过一般不翻译,直接用原文。而且这个词在不同场合也有不同的解释:   1、 在网络的分层结构和宽带的合理分配方面,TRUNK被解释为“端口汇聚”,是带宽扩展和链路备份的一个重要途径。TRUNK把多个物理端口捆绑在一起当作一个逻辑端口使用,可以把多组端口的宽带叠加起来使用。TRUNK技术可以实现TRUNK内部多条链路互为备份的功能,即当一条链路出现故障时,不影响其他链路的工作,同时多链路之间还能实现流量均衡,就像我们熟悉的打印机池和MODEM池一样   2、在电信网络的语音级的线路中,Trunk指“主干网络、电话干线”,即两个交换局或交换机之间的连接电路或信道,它能够在两端之间进行转接,并提供必要的信令和终端设备。   3、 但是在最普遍的路由与交换领域,VLAN的端口聚合也有的叫TRUNK,不过大多数都叫TRUNKING ,如CISCO公司。所谓的TRUNKING是用来在不同的交换机之间进行连接,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通讯。其中交换机之间互联用的端口就称为TRUNK端口。与一般的交换机的级联不同,TRUNKING是基于OSI第二层摹<偕杳挥蠺RUNKING技术,如果你在2个交换机上分别划分了多个VLAN(VLAN也是基于Layer2的),那么分别在两个交换机上的VLAN10和VLAN20的各自的成员如果要互通,就需要在A交换机上设为VLAN10的端口中取一个和交换机B上设为VLAN10的某个端口作级联连接。VLAN20也是这样。那么如果交换机上划了10个VLAN就需要分别连10条线作级联,端口效率就太低了。 当交换机支持TRUNKING的时候,事情就简单了,只需要2个交换机之间有一条级联线,并将对应的端口设置为Trunk,这条线路就可以承载交换机上所有VLAN的信息。这样的话,就算交换机上设了上百个个VLAN也只用1个端口就解决了。   如果是不同台的交换机上相同id的vlan要相互通信,那么可以通过共享的trunk端口就可以实现,如果是同一台上不同id的vlan/不同台不同id的vlan它们之间要相互通信,需要通过第三方的路由来实现;vlan的划分有两个需要注意地方:   一是划分了几个不同的vlan组,都有不同的vlan id号;分配到vlan 组里面的交换机端口也有port id.比如端口1,2,3,4划分到vlan10,5,6,7,8划分到vlan20,我可以把1,3,4的端口的port id设置为10,而把2端口的 port id设置为20;把5,6,7端口的port id设置为20,而把8端口的port id设置为10.这样的话,vlan10中的1,3,4端口能够和vlan20中8端口相互通信;而vlan10中的2端口能够和vlan20中的5,6,7端口相互通信;虽然vlan id不同,但是port id相同,就能通信,同样vlan id相同,port id不同的端口之间却不能相互访问,比如vlan10中的2端口就不能和1,3,4端口通信。 VTP(VLAN Trunking Protocol):是VLAN中继协议,也被称为虚拟局域网干道协议。 它是一个OSI参考模型第二层的通信协议,主要用于管理在同一个域的网络范围内VLANs的建立、删除和重命名。在一台VTP Server 上配置一个新的VLAN时,该VLAN的配置信息将自动传播到本域内的其他所有交换机。这些交换机会自动地接收这些配置信息,使其VLAN的配置与VTP Server保持一致,从而减少在多台设备上配置同一个VLAN信息的工作量,而且保持了VLAN配置的统一性。 肇庆工商职业技术学院实训报告 项目名称:交换机VLAN 分组情况:1人/组 任课老师:孔宇强 实训指导老师:孔宇强 实训时间 2009年 实训目的及理论依据 掌握交换机VLAN设置及其原理 实训要求及操作规程 正确使用交换机VLAN的设置命令 所用仪器设备/软件 运行windows xp的PC一台 思科路由器配置模拟软件 实训步骤 1.规划ip地址 2.设置VLAN 3测试可通性 4. 设置干线trunk 5. 三个交换机的情况 实训结果分析及体会
配置数据源和连接池不仅需要写 YAML 文件,还需要进行其他几个步骤: 1. 导入数据库驱动依赖:在项目的构建文件(如pom.xml或build.gradle)中,添加相应数据库驱动的依赖。例如,如果你使用的是MySQL数据库,需要导入MySQL JDBC驱动的依赖。 2. 创建数据源对象:在后端代码中,根据配置文件中的信息,创建数据源对象。可以使用连接池库(如HikariCP、C3P0等)提供的API来创建连接池和数据源对象。设置数据源的相关属性,例如数据库URL、用户名、密码等。 3. 配置连接池参数:根据具体需求,对连接池进行一些额外的配置。例如,可以设置最小连接数、最大连接数、连接超时时间、空闲连接超时时间等。 4. 初始化和销毁连接池:在应用启动时,初始化连接池并将数据源对象初始化。在应用关闭时,需要销毁连接池并释放相关资源。可以使用框架提供的生命周期钩子(如Spring Framework的InitializingBean和DisposableBean接口)或类似的机制来实现这些操作。 5. 在代码中使用数据源:在需要与数据库进行交互的地方,使用数据源对象获取数据库连接。可以通过调用数据源对象的方法来获取连接,并进行数据库操作。 除了以上步骤,还需要确保数据库驱动类已经正确导入到项目的类路径中,并且应用运行环境能够正确加载驱动类。 需要注意的是,具体的实现方式和步骤可能会受到所使用的框架和工具的影响。一些框架(如Spring Boot)提供了自动配置功能,可以简化数据源和连接池配置过程。你可以根据项目的具体情况来选择适合的方式来配置数据源和连接池

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值