测试tomcat同solr的连接

上一篇文章讲到solr连接问题分析:

solr1.4 中SearchHandler使用的httpclient在高并发可能出现的问题


现在做一次测试:


tomcat  Connector的配置如下:暂时为BIO方式

 <Connector port="8080" protocol="HTTP/1.1" maxThreads="20" socket.soTimeout="2000"
          connectionTimeout="2000" redirectPort="8443"  keepAliveTimeout="2000" enableLookups="false" acceptCount="0" URIEncoding="UTF-8"/>


在tomcat上布置两个solr服务,主要测试solr 上一篇文章提到的SearchHandler里分布搜索的httpclient线程池配置问题。


<requestHandler name="me" class="solr.SearchHandlerExt">
    <!-- default values for query parameters -->
     <lst name="defaults">
       <str name="echoParams">explicit</str>
       <str name="shards">localhost:8080/solr,localhost:8080/solr2</str>
	<str name="shards.qt">single</str>
	<str name="timeAllow"></str>
     </lst>
<!--  分配给某个主机的连接池数量 -->
     <int name="maxConnectionsPerHost">2</int>

<!--    总共的连接数量-->
     <int name="maxTotalConnections">10</int>
     
  </requestHandler>
   


编写了个shell脚本文件  curl_link 运行测试。。接收每一个参数作为循环次数:


index=1
echo $1
while [ $index -le $1 ]

do
dest="http://localhost:8080/solr/select/?q=1*&start=100&rows=100"
echo $dest
curl $dest &
index=$(($index +1)) 
echo index
done


监控tomcat打出的日志 :tail -f logs/catalina.out|grep -o QTime=.*


a) 运行   sh curl_link 1

QTime=1001    (某子机搜索时间)
QTime=1003   (某子机搜索时)
QTime=2017    (总共时间)


正常情况。。总时间 粗略大于两子机时间之和一眯点

a) 运行   sh curl_link 2

QTime=1002 
QTime=1002 
QTime=2018

 
QTime=1002 
QTime=1001 
QTime=3026

已经有点不正常。。由于httpclient最多只能在同一时间请求同一目标host,后面有阻塞等待了会,直到有请求完成并releaseConnection,有等待多一秒的时间


c)运行   sh curl_link 3


QTime=1003 
QTime=1002 

QTime=3159 


QTime=1001 

QTime=1008 

QTime=4171 


QTime=1002

QTime=1002 

QTime=4178 


c)运行   sh curl_link 10


QTime=1001 
QTime=1001 
QTime=2038 


QTime=1002 
QTime=1009 
QTime=3069 

QTime=1003 
QTime=1001 

QTime=5071 


QTime=1002
QTime=1002

QTime=6095 

 
QTime=1002 
QTime=1002 
QTime=7099


QTime=1001  
QTime=1003 
QTime=7110 


QTime=1001 
QTime=1002 

QTime=9130 


QTime=1002 
QTime=1003 
QTime=10139


QTime=1002 
QTime=1001 
QTime=11156

 
QTime=1002 
QTime=1002  
QTime=11155



c)运行   sh curl_link 20    ----tomcat上设置了最多20条线程

服务直接挂了。。每一条请求又必须再分发请求。这个时候都阻塞死了。。



a) 运行   sh curl_link 2


QTime=1054 
QTime=1068 
QTime=1144 
QTime=1147 
QTime=2517 
QTime=2509 




c)运行   sh curl_link 4



QTime=1002 
QTime=1001 
QTime=1013 


QTime=1002 
QTime=2026 
QTime=2038 

QTime=1002 
QTime=1001 
QTime=1002 
QTime=3047 

QTime=1001 
QTime=3059








c)运行   sh curl_link 10

QTime=1001 
QTime=1016 
QTime=1017 
QTime=1013 
QTime=2069 
QTime=2072 
QTime=1002 
QTime=1002 
QTime=1001 
QTime=1002 
QTime=3115 
QTime=3126 
QTime=1001 
QTime=1001 
QTime=4136 
QTime=1003 
QTime=1004 
QTime=4131 
QTime=1001 
QTime=1002 
QTime=5138 
QTime=1006 
QTime=1004 
QTime=5119 
QTime=1001 
QTime=1002 
QTime=6093 
QTime=1000 
QTime=1002 
QTime=6106



从上面的数据可以看出只要将  

maxConnectionsPerHost

参数修改大一些,在并发大一些的时候表现更佳。


同样一旦tomcat上的连接数给用完时,服务就会挂掉了。。不管solr里面设置的连接池是多少。。。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值