2013-10-09 242 views
0

我的應用程序必須處理客戶端http請求,與某些API進行通信並將數據返回給客戶端。我宣佈全球RestTemplate我的應用程序,如下圖所示:HttpConnectionManagerParams.setDefaultMaxConnectionsPerHost(int)似乎無法正常工作

<bean id="httpClient" class="org.apache.commons.httpclient.HttpClient"> 
    <constructor-arg index="0"> 
     <bean id="httpClientParams" class="org.apache.commons.httpclient.params.HttpClientParams"> 
      <property name="authenticationPreemptive" value="false" /> 
     </bean> 
    </constructor-arg> 
    <constructor-arg index="1"> 
     <bean class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager"> 
      <property name="params"> 
       <bean class="org.apache.commons.httpclient.params.HttpConnectionManagerParams"> 
        <property name="connectionTimeout" value="20000" /> 
        <property name="soTimeout" value="20000" /> 
        <property name="defaultMaxConnectionsPerHost" value="30" /> 
        <property name="maxTotalConnections" value="500" /> 
       </bean> 
      </property> 
     </bean> 
    </constructor-arg> 
</bean> 

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"> 
    <property name="requestFactory"> 
     <bean class="org.springframework.http.client.CommonsClientHttpRequestFactory"> 
      <property name="httpClient" ref="httpClient" /> 
     </bean> 
    </property> 
</bean> 

通過設置defaultMaxConnectionsPerHost,我希望每個主機同時連接數爲。但是通過我的測試,看起來實際的數字最多是不管我設置了多大defaultMaxConnectionsPerHost

我怎麼辦我的測試:

  • 客戶端:通過瀏覽器同時發送20請求我的web應用程序(我試過Firefox和Chrome)。
  • 服務器端:

    • 問題1:爲什麼每個主機同時連接的數量不是30預期netstat

    問題獲取連接數?

  • 問題2:我的應用程序必須每秒向一臺主機發送約10個請求。每個請求持續2秒。那麼我應該設置什麼合適的價值defaultMaxConnectionsPerHost

回答

0

經過一些更多的測試後,我發現我在測試中提到的測試方式可能是錯誤的。並且defaultMaxConnectionsPerHost按預期工作。

相關問題