2012-08-02 56 views
1

我開發了一個RESTful WCF服務(WebHttpBinding),它是一個AppFabric Cache客戶端。我使用jMeter進行了性能測試。測試計劃在服務中包含一個操作,這將在100個併發線程中調用。AppFabric Cache - 性能

但是,我注意到在運行測試後,the first 20 to 30 threads are taking considerable amount of time to get the response (say 10-15 seconds),然後所有其他剩餘線程將在AppFabric Cache相關代碼開啓後的2-3秒內完成執行。每當我評論AppFabric相關代碼時,它都可以正常工作。請注意,我只使用獲取,否

我的服務有以下配置爲T的AppFabric:

<dataCacheClient requestTimeout="60000" channelOpenTimeout="15000" maxConnectionsToServer="2"> 
    <localCache isEnabled="true" sync="NotificationBased" ttlValue="300000" objectCount="100000" /> 
    <clientNotification pollInterval="10" maxQueueLength="100000" /> 
    <hosts> 
     <host name="**********" cachePort="*******" />  
    </hosts> 
    <securityProperties mode="Transport" protectionLevel="EncryptAndSign" /> 
    <transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456" maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000" receiveTimeout="600000" /> 
    </dataCacheClient> 

可能有人請給一些指針,至於是什麼原因造成這種初始延遲?

回答

0

如果你做性能測試,你必須開始一個熱身期。在此期間,您允許應用程序啓動,並填充所有緩存。在啓動階段之後,您可以測試應用程序的真實生活。

在實踐中,您將啓動應用程序並運行幾分鐘而不測量性能。然後你開始測試並測量性能。您會看到在測試開始時沒有啓動延遲。

+0

我在開始性能測試之前正在爲應用程序加熱。在運行測試之前,我有一個使用瀏覽器調用的GET操作。之後,我運行測試。 – Thomas 2012-08-02 09:10:42

+2

但是,你的熱身100線程?緩存的線程池也需要升溫。在池開始創建和添加新線程之前,需要花費幾秒鐘的時間才能「脫離線程」。這聽起來像延遲可能是你所看到的。 – ErnieL 2012-08-03 05:47:09