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

  • 时间:
  • 浏览:0
  • 来源:3分时时彩官网_3分时时彩网站_去哪玩3分时时彩

昨天晚上 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 在 30-30 左右),.NET Core 博客站点像变了另一方似的,极少量请求响应速度调慢,因此随着时间推移如此 慢(有五种泄漏什么的问题),先是什么都请求响应时间5秒左右(我们歌词 歌词 歌词 是从5秒如果如果刚开始监控的),因此是10秒左右,因此是15秒左右。。。因此日志中经常跳出极少量下面的错误

2019-08-14 13:13:16.290 [Error] Failed executing DbCommand ("30,022"ms)
System.Data.SqlClient.SqlException (0x30131904): 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 查询超时(超过30秒),而 EF Core 生成的什么 SQL 说说如此 什么的问题,我们歌词 歌词 歌词 都 review 过。

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

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

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

我们歌词 歌词 歌词 的数据库服务器用的是阿里云 RDS SQL Server 308 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 308 R2 的支持什么的问题。

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

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

EF Core 与 SqlClient 相关什么的问题链接:

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

Powered by .NET Core 系列博文:

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