【问题标题】:AppFabric Cache - PerformanceAppFabric 缓存 - 性能
【发布时间】:2012-08-02 08:05:19
【问题描述】:

我开发了一个 RESTful WCF 服务 (WebHttpBinding),它是一个 AppFabric 缓存客户端。我使用 jMeter 进行了性能测试。测试计划包含服务中的一项操作,将在 100 个并发线程中调用。

但是,我注意到在运行测试后,the first 20 to 30 threads are taking considerable amount of time to get the response (say 10-15 seconds) 以及所有其他剩余线程将在 2-3 秒内完成它们的执行,并打开 AppFabric 缓存相关代码。每当我评论 AppFabric 相关代码时,它都可以正常工作。请注意,我只使用 Get,没有使用 Put

我的服务作为 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>

有人能指点一下造成这种初始延迟的原因吗?

【问题讨论】:

    标签: c# wcf appfabric


    【解决方案1】:

    如果您进行性能测试,则必须从预热期开始。在此期间,您允许应用程序启动,并填充所有缓存。启动期结束后,您可以测试应用程序的实际性能。

    实际上,您启动应用程序并运行几分钟而不测量性能。然后开始测试并测量性能。您会看到测试开始时没有启动延迟。

    【讨论】:

    • 我在开始性能测试之前正在预热应用程序。在运行测试之前,我有一个使用浏览器调用的 GET 操作。在那之后,我运行测试。
    • 但是你的热身是 100 线程吗?缓存的线程池也需要预热。在池开始创建和添加新线程之前,需要几秒钟的“线程不足”。听起来延迟可能就是您所看到的。
    猜你喜欢
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    相关资源
    最近更新 更多