如何提高.net wcf服务的性能

时间:2012-02-19 11:01:34

标签: asp.net .net wcf performance appharbor

我正在将一个cpu-heavy 4.0的Windows应用程序移植到.net 4.0 wcf服务。基本上我只是将.net类导入到wcf服务中。

除了在wcf服务上的性能之外,一切运行良好 - 在同一台开发机器上本地运行的aspx.net wcf服务上,需要6267947个刻度(2539ms)的任务使用815349861刻度(13045ms)。

我已经将服务+测试客户端上传到appharbor,其性能与本地计算机一样糟糕 - 我的测试应用程序的链接是:http://www.wsolver.com/。关于如何提高绩效的任何想法?

5 个答案:

答案 0 :(得分:3)

检查可能在请求时构建的服务依赖项。这些包含构造函数依赖项和字段/属性依赖项。也许其中一个导致延误?如果是这种情况,请考虑使用单例来实例化长时间运行的类。

您是否确认后续请求仍会导致延迟?

还要创建一个带状的新服务,它可以像Datetime.Now.toString()那样执行简单的操作,并查看它是否存在同样的问题。

答案 1 :(得分:3)

答案 2 :(得分:2)

如果需要对复杂数据结构进行耗时的初始化,则应在Application_Start()中进行一次,并将生成的数据结构分配给MvcApplication对象上的静态变量。在应用程序启动时只执行一次将比在每个请求中执行它快得多。

答案 3 :(得分:1)

我会在13秒内(或几个使用procdump)进行完全内存转储,然后实际查看进程中发生的事情(windbg和sos.dll)。然后,您可以缩小哪个代码是罪魁祸首。

答案 4 :(得分:0)

我认为字典树只加载一次,进入缓存?你不是每次打电话都加载它吗?