做梦也没有想到:Windows 上的 .NET Core 版博客系统表现更糟糕

  • 时间:
  • 浏览:0
  • 来源:1分时时彩官网_1分时时彩正规平台_1分时时彩平台网址

昨天晚上 18:15 左右我们歌词 歌词 歌词 歌词 发布了跑在 Windows 上 .NET Core 博客系统,本想与 .NET Framework 版进行同“窗”的较量,结果刚发布上线就发现 CPU 占用异常高,发布只有1小时就下线了,根本全部都是有另另一个级别的较量,可能性说 .NET Core 连较量的资格都越来越,刚上台就趴下了。

可能性与 Linux 上的 .NET Core 博客系统(docker swarm 与 docker-compose 部署方式)相比,也是全部都是有另另一个级别的较量,部署在 Linux 上时是访问高峰撑不住,而部署在 Windows 上连访问低峰都撑不住。

在昨天发布失败后,我们歌词 歌词 歌词 歌词 怀疑 CPU 异常高可能性是可能性 memcached 客户端 EnyimMemcachedCore 使用异步方式时的并发性能问提,于是我们歌词 歌词 歌词 歌词 把异步改为同步。

今天我们歌词 歌词 歌词 歌词 在验证算是 EnyimMemcachedCore 的并发性能问提时,我们歌词 歌词 歌词 歌词 采用了新的方式,接入帕累托图流量,让单台服务器的 QPS 达到一定值,结果发现了另外有另另一个做梦也越来越想到的问提。

在 QPS 不高时,跑在 Windows 上的 .NET Core 博客站点表现非常出色,响应时延越来越来越快;不想当 QPS 高于一定值(我们歌词 歌词 歌词 歌词 测试时接入的流量让 QPS 在 50-50 左右),.NET Core 博客站点像变了当事人似的,血块请求响应时延越来越来越快,不想随着时间推移越来越慢(一种泄漏问提),先是全都请求响应时间5秒左右(我们歌词 歌词 歌词 歌词 是从5秒开始英语 英语 了了监控的),不想是10秒左右,不想是15秒左右。。。不想日志中再次出现 血块下面的错误

2019-08-14 13:13:16.290 [Error] Failed executing DbCommand ("50,022"ms)
System.Data.SqlClient.SqlException (0x50131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 ---> System.ComponentModel.Win32Exception (258): The wait operation timed out.
   at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__126_0(Task`1 result)
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)

EF Core 执行的全都 SQL 查询超时(超过50秒),而 EF Core 生成的哪几个 SQL 得话越来越问提,我们歌词 歌词 歌词 歌词 都 review 过。

查看数据库服务库的监控,让他大吃一惊,就这点 QPS ,仅仅可能性 .NET Core 在 Windows  上跑竟然造成数据库服务器 CPU 50% 。

而假若将 .NET Core 博客站点一下线,数据库服务器 CPU 就立马恢复正常,问提非常奇怪。

今天微软也发布了 .NET Core 3.0 Preview 8 ,我们歌词 歌词 歌词 歌词 将 System.Data.SqlClient 升级到 4.7.0-preview8.19405.3 也是同样的问提。

我们歌词 歌词 歌词 歌词 的数据库服务器用的是阿里云 RDS SQL Server 508 R2 ,EF Core 用的是 3.0.0-preview5.19227.1 ,可能性 EF Core 3.0 从 Preview 6 开始英语 英语 了了不支持 UseRowNumberForPaging ,全都暂时无法升级到 EF Core 3.0 Preview 8 ,告诉我最新版的 EF Core 算是全部都是你你这些问提,但我们歌词 歌词 歌词 歌词 怀疑应该是 System.Data.SqlClient 的问提,最少是 System.Data.SqlClient 对 Windows 的支持问提,可能性是对 SQL Server 508 R2 的支持问提。

.NET Core 升级之路又遇新障碍。

接下来,我们歌词 歌词 歌词 歌词 会进一步排查这 2 个 CPU 高的问提(web服务器与数据库服务器)。

EF Core 与 SqlClient 相关问提链接:

  • 坑暗花明:又遇 .NET Core 中 System.Data.SqlClient 查询缓慢的问提
  • 好大有另另一个坑: EF Core 异步读取大字符串字段比同步慢50多倍

Powered by .NET Core 系列博文:

  • 【故障公告】发布 .NET Core 版博客站点引起血块 50 错误
  • 【网站公告】.NET Core 版博客站点第二次发布尝试
  • 暴风雨中的 online : .NET Core 版博客站点遭遇的高并发问提进展
  • Powered by .NET Core 进展:验证高并发性能问提嫌疑犯 docker swarm
  • 同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线