几天前我们交付了一个成功的项目,现在我们需要在我们的WCF Restful API中进行一些性能改进。
项目使用以下工具/技术
1-LINQ
2-实体框架
3-用于日志记录/异常处理的企业库
4-MS SQL 2008
5-部署在IIS 7 上
需要注意的几点
1-10-20个查询在LINQ 中有7个以上的表联接
2-当前IIS部署了10多个应用程序
3-实体框架有大约60个表
4-WCF api使用HTTPS
5-所有API调用返回JSON响应
一般流程为
1-收到WCF调用
2-会话已检查
3-BL层的功能称为
4-DA层的功能称为
5-JSON 中返回的响应
目前,根据我的少量知识和研究,我认为以下内容可能会提高的性能
1-实现参考数据的缓存
2-将具有3个以上联接的LINQ查询移动到存储过程(并且可能使用提示?)
3-数据库表重新索引
4-使用性能计数器了解问题区域的
5-将具有3个以上更新/删除/插入的功能移动到存储过程
你能指出上述改进的一些问题吗?以及什么我还能做其他改进吗?
您的文章缺少一些关于改进建议的背景。他们只是猜测,还是你实际测量并确定了他们是问题领域?
没有什么可以替代适当的性能监控和分析来确定您应该关注哪个领域进行优化。其他一切都只是猜测,尽管有些事情可能是显而易见的,但实际上提高性能的往往是不那么明显的事情。
-
通过性能评测工具运行代码,可以快速识别实际应用程序中的问题区域。如果您无法访问Visual Studio性能分析器(Visual Studio Premium或Ultimate),请查看PerfView,它是一款非常好的内存/CPU探查器,不会花费任何费用。
-
使用MiniProfiler等工具可以轻松设置测量点,并在运行时监控实体框架的执行情况。MiniProfiler还可以配置为将结果保存到数据库中,这在没有UI时很方便。
-
通过分析实体框架中生成的T-SQL语句(可以在MiniProfiler中看到),您可以通过查看SQL执行计划以及获取SQL IO统计信息来轻松地衡量查询性能。这应该会让您很好地了解哪些内容可以/应该放入存储过程中,以及是否需要任何其他索引。