如何加速部署在 AZURE 上的 .NET MVC 站点?
How to speed .NET MVC site deployed on AZURE?
我当然想达到最高性能。
我能为它做什么?
- 对 CSS 和 JS 文件使用 Bundle?好的
- 我使用什么样的存储空间?现在是 SQL 数据库。
但是site和db放在不同的region。数据库的大小不会太大 -1 gb - 就足够了。以及 - 如何减少查询时间。现在 - 太长了。
- 我应该为我的网站启用 "always on" 功能吗?
- 还有什么事吗?有文章读了吗?
提前致谢。
您只能做这么多优化 - 如果您真的想要 "maximum performance" 那么您可以在 C/C++ 中重写您的站点作为 kext 或驱动程序服务并存储所有您在 memcached
中的数据,或者可能将您的整个网站编码为一系列数百万个单独的高频电子逻辑门,所有这些门都蚀刻在集成电路中并直接连接到网络接口...
...既然我们是在现实的条件下 ;) 你的帖子有主要的性能问题罪魁祸首:你的数据库和网络服务器不是彼此本地的,这是一个问题:每个网页用户请求将触发数据库请求,如果数据库距离超过几毫秒,则会导致问题(MSSQL Server 也有相当繁琐的网络协议,这会大大增加延迟效应)。
理想情况下,从请求发送到响应到达的总页面生成时间应低于 100 毫秒,然后用户才会注意到您的网站 "slow"。考虑到网络服务器可能与客户端有 30 毫秒或更长的时间,这意味着您有大约 50-60 毫秒的时间来生成页面,这意味着您的数据库服务器必须与您的网络服务器相差 0-3 毫秒。即使是 5 毫秒的延迟也太大了,因为像 3-4 次数据库查询这样无害的事情会导致至少 4 * ( 5ms + DB read time)ms
的延迟 - 数据库读取时间可能从 0 毫秒(如果数据在内存中)到最多不等20 毫秒,如果它在慢盘驱动器上,或者甚至更慢,具体取决于服务器负载 - 这就是您如何轻松找到一个 "simple" 网站,仅在服务器上生成就花费超过 100 毫秒,更不用说发送到客户端了。
简而言之:将您的数据库移动到与您的网络服务器位于同一本地网络上的服务器以减少延迟。
根据您的条件开始的最直接且最简单的方法是将数据库和站点移动到同一数据中心。
稍后你可能会想:
- 分析您的代码
- 添加 (Azure Redis) 缓存
- 负载平衡您的网站(如果收费足够)
- 以及 compacting/bundling/minimizing 您的代码周围的一切。
希望对您有所帮助,
我当然想达到最高性能。 我能为它做什么?
- 对 CSS 和 JS 文件使用 Bundle?好的
- 我使用什么样的存储空间?现在是 SQL 数据库。 但是site和db放在不同的region。数据库的大小不会太大 -1 gb - 就足够了。以及 - 如何减少查询时间。现在 - 太长了。
- 我应该为我的网站启用 "always on" 功能吗?
- 还有什么事吗?有文章读了吗?
提前致谢。
您只能做这么多优化 - 如果您真的想要 "maximum performance" 那么您可以在 C/C++ 中重写您的站点作为 kext 或驱动程序服务并存储所有您在 memcached
中的数据,或者可能将您的整个网站编码为一系列数百万个单独的高频电子逻辑门,所有这些门都蚀刻在集成电路中并直接连接到网络接口...
...既然我们是在现实的条件下 ;) 你的帖子有主要的性能问题罪魁祸首:你的数据库和网络服务器不是彼此本地的,这是一个问题:每个网页用户请求将触发数据库请求,如果数据库距离超过几毫秒,则会导致问题(MSSQL Server 也有相当繁琐的网络协议,这会大大增加延迟效应)。
理想情况下,从请求发送到响应到达的总页面生成时间应低于 100 毫秒,然后用户才会注意到您的网站 "slow"。考虑到网络服务器可能与客户端有 30 毫秒或更长的时间,这意味着您有大约 50-60 毫秒的时间来生成页面,这意味着您的数据库服务器必须与您的网络服务器相差 0-3 毫秒。即使是 5 毫秒的延迟也太大了,因为像 3-4 次数据库查询这样无害的事情会导致至少 4 * ( 5ms + DB read time)ms
的延迟 - 数据库读取时间可能从 0 毫秒(如果数据在内存中)到最多不等20 毫秒,如果它在慢盘驱动器上,或者甚至更慢,具体取决于服务器负载 - 这就是您如何轻松找到一个 "simple" 网站,仅在服务器上生成就花费超过 100 毫秒,更不用说发送到客户端了。
简而言之:将您的数据库移动到与您的网络服务器位于同一本地网络上的服务器以减少延迟。
根据您的条件开始的最直接且最简单的方法是将数据库和站点移动到同一数据中心。 稍后你可能会想:
- 分析您的代码
- 添加 (Azure Redis) 缓存
- 负载平衡您的网站(如果收费足够)
- 以及 compacting/bundling/minimizing 您的代码周围的一切。
希望对您有所帮助,