0

几天前我们交付了一个成功的项目,现在我们需要在 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 个以上更新/删除/插入的函数移动到存储过程

您能指出上述改进的一些问题吗?我还能做哪些其他改进?

4

1 回答 1

1

您的帖子缺少有关改进建议的一些背景信息。它们只是猜测还是您实际测量并确定它们是问题区域?

确实没有什么可以替代适当的性能监控和分析来确定您应该关注哪个区域进行优化。其他一切都只是猜测,尽管有些事情可能很明显,但实际上提高性能的往往是不那么明显的事情。

  1. 通过性能分析工具运行您的代码,以快速识别实际应用程序中的问题区域。如果您无法访问Visual Studio 性能分析器(Visual Studio Premium 或 Ultimate),请查看PerfView,它是一个非常好的内存/CPU 分析器,不会花费您任何费用。

  2. 使用MiniProfiler等工具可以轻松设置测量点,以及在运行时监控实体框架的执行。MiniProfiler 也可以配置为将结果保存到数据库中,这在您没有 UI 时很方便。

  3. 分析从实体框架生成的 T-SQL 语句(可以在 MiniProfiler 中看到)应该允许您通过查看 SQL 执行计划以及获取SQL IO 统计信息来轻松测量查询性能。这应该让您对可以/应该放入存储过程的内容以及是否需要任何其他索引有一个很好的概述。

于 2013-02-07T08:58:47.673 回答