摘要: 由于遭遇 SqlClient 的性能问题,向 .NET Core 3.0 的升级工作被迫提前了。在升级过程中遇到了一个问题,我们在 Razor Class Library 中实现的自定义错误页面无法在 ASP.NET Core 3.0 Preview 5 中正常工作,问题原因详见博问"属性路由在 ASP.NET Core 3.0 中不起作用"。由于属性路由不起作用的问题没找到解决方法,于是被迫采用另外一种解决方法:在中间件中调用 Razor Class Library 中的 Controller Action 显示自定义错误页面阅读全文
posted @ 2019-05-18 17:52 dudu 阅读(1107) 评论(7) 编辑
摘要: 如果不是遇到,真的不会想到,代码世界的问题真是千奇百怪,这次遇到的是 dotnet pack 打包文件版本号引起的问题。之前进行 nuget 打包都是在 Visual Studio build 时进行,版本号时通过 .csproj 中的 VersionPrefix 指定,没遇到问题。最近,改为通过 shell 脚本在 linux 上打包,开始的 shell 脚本是怎么写的阅读全文
posted @ 2019-05-17 14:30 dudu 阅读(68) 评论(0) 编辑
摘要: 这两天我们又在另外一个 ASP.NET Core 2.2 项目中也遇到了查询 100 数据库记录速度慢(需要4~6秒)的问题,而且所查询的数据库表数据量并不是很大。通过 EF Core 的 日志记录发现耗时发生在 Executed DbCommand 时,耗时发生点与之前的情况不一样阅读全文
posted @ 2019-05-15 09:28 dudu 阅读(271) 评论(3) 编辑
摘要: 在阅读 Announcing .NET Core 3.0 Preview 5 时发现了 .NET Core 3.0 Preview 5 的一个新特性 —— Publishing Single EXEs ,可以通过 dotnet publish 命令将整个 .net core 应用发布为一个可执行文件。一个期待很久的特性,终于随着 .NET Core 3.0 Preview 5 来了,赶紧体验一下。阅读全文
posted @ 2019-05-09 12:08 dudu 阅读(137) 评论(5) 编辑
摘要: 最近同事对 .net core memcached 缓存客户端 EnyimMemcachedCore 进行了高并发下的压力测试,发现在 linux 上高并发下使用 async 异步方法读取缓存数据会出现大量失败的情况,比如在一次测试中,100万次读取缓存,只有12次成功,999988次失败,好恐怖阅读全文
posted @ 2019-05-05 17:40 dudu 阅读(141) 评论(2) 编辑
摘要: 最近遇到 NetworkStream.ReadAsync 在 Linux 上高并发读取数据的问题,由此激发了阅读 corefx 中 System.Net.Sockets 实现源码(基于 corefx 2.2)的兴趣。这篇随笔是阅读 NetworkStream.ReadAsync 相关源码的简单笔记,基于在 Linux 上运行的场景。阅读全文
posted @ 2019-05-04 15:29 dudu 阅读(47) 评论(0) 编辑
摘要: 昨天回答了博问中的一个问题 —— “HTTP 错误 500.19 - Internal Server Error dotnetcore”,今天在这篇随笔中时候事后诸葛亮地小结一下。服务器是 Windows Server 2008 R2 ,ASP.NET Core 版本是 2.1 ,错误信息:“HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效”阅读全文
posted @ 2019-05-04 09:55 dudu 阅读(100) 评论(1) 编辑
摘要: 最近遇到一个非常奇特的问题,在一个 ASP.NET Core 项目中从 SQL Server 2008 R2 中查询获取 100 条记录竟然耗时 10 多秒,如果是查询本身慢,那到不是什么奇特的问题。说它非常奇特是因为耗时主要发生在 SqlDataReader 读取数据时,开始怀疑是 EF Core 的问题,通过在 EF Core 源码中打点,定位到耗时发生在 _dataReader.ReadAsync 处阅读全文
posted @ 2019-04-29 23:43 dudu 阅读(294) 评论(2) 编辑
摘要: 将 ASP.NET Core 2.2 迁移至 ASP.NET Core 3.0 需要注意的地方记录在这篇随笔中以备忘。TargetFramework 改为 netcoreapp3.0 ,从 PackageReference 中移除 Microsoft.AspNetCore.App ,Program 中 WebHost 改为 Host ,Startup 中 app.UseMvc() 改为 app.UseRouting() 与 app.UseEndpoints()阅读全文
posted @ 2019-04-28 19:38 dudu 阅读(151) 评论(1) 编辑
摘要: 在昨天的技术周会上发现 EnyimMemcached 中建立 Socket 连接的代码有问题,今天坐车的时候在手机上阅读 .net core 2.2 的 SqlClient 中同步建立 Socket 连接的代码 SNITcpHandle.cs#L180 学习了一下。阅读全文
posted @ 2019-04-27 14:44 dudu 阅读(74) 评论(4) 编辑
摘要: 最近遇到一个非常诡异的问题,在一个 ASP.NET Core 2.2 项目中,从 SQL Server 数据库查询 100 条数据记录,会出现 16-22s 左右的延迟。延迟出现在执行 SqlDataReader 的 ReadAsync 方法时,在一行一行读取数据时,读取某些行时会出现 2-3s 的延迟。阅读全文
posted @ 2019-04-22 12:05 dudu 阅读(75) 评论(2) 编辑
摘要: 最近在排查一个奇怪的 EF Core 查询速度慢的问题,需要在 corefx 2.2.3 的 System.Data.SqlClient 源码中打点。github 上签出 corefx 的源代码,运行 build.cmd 命令,然后用 VS2017 打开 System.Data.SqlClient.sln ,添加 Console.WriteLine 打点代码,用 VS 进行 build 。阅读全文
posted @ 2019-04-13 17:27 dudu 阅读(105) 评论(0) 编辑
摘要: 最近遇到了一个 EF Core 的恐怖问题,在添加数据时竟然会自动删除数据库中已存在的数据,经过追查发现是一个多余的实体关系配置引起的。罪魁祸首就是上面的 `WithOne()` 。今天写了个非常简单的控制台程序重现了这个问题。阅读全文
posted @ 2019-03-28 16:39 dudu 阅读(136) 评论(0) 编辑
摘要: 在前两天遇到 .NET Core 中 EF Core 的异步与同步查询的百倍性能之差之后,这两天又遇到了 `AutoMapper ProjectTo` 与 `Mapster ProjectToType` 的百倍性能之差。问题是在昨天发现的,使用 `AutoMapper ProjectTo阅读全文
posted @ 2019-02-28 13:45 dudu 阅读(468) 评论(7) 编辑
摘要: 这两天遇到一个奇怪的问题,通过 EF/EF Core 查询数据库速度奇慢,先是在传统的 ASP.NET 项目中遇到(用的是EF6.0),后来将该项目迁移至 ASP.NET Core 也是同样的问题(用的是EF Core 2.2.2)。 问题触发的条件是所查询的字段中存储了很大的字符串(有400多万个阅读全文
posted @ 2019-02-23 16:29 dudu 阅读(548) 评论(8) 编辑
摘要: DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext 实例的开销,但没有想到其中藏着一个小坑。最近有一个 ASP.NET Core 项目持续运行一段时间后日志中就会出现数据库连接池达到最大连接数限制的错误阅读全文
posted @ 2019-02-18 22:05 dudu 阅读(807) 评论(6) 编辑
摘要: 这是今天在实际项目中遇到的一个问题,EF Core 2.2 生成了下面的 SQL 语句,INNER JOIN 部分丑陋的 SQL 语句让人无法忍受。使用的是标准的一对多(one-to-mant)映射关系,在其他项目都能生成赏心悦目的 SQL 语句,唯独今天这个项目中不行。阅读全文
posted @ 2018-12-18 17:44 dudu 阅读(302) 评论(1) 编辑
摘要: 在 .NET Framework 与 .NET Core 中 HttpClient 有个臭名昭著的问题,HttpClient 实现了 IDispose 接口,但当你 Dispose 它时,它不会立即关闭所使用的 tcp 连接,而是将 tcp 连接置为 TIME_WAIT 状态,240秒(4分钟)后才真正关闭连接。对于高并发的场景,比如每秒 1000 个请求,每个请求都用到 HttpClient阅读全文
posted @ 2018-10-31 16:30 dudu 阅读(2022) 评论(15) 编辑
摘要: 在我们 2015 年开始的从 .NET Framework 向 .NET Core 迁移的工程中,遇到的最大的坑就是标题中所说的——同步方法中调用异步方法发生”死锁”。虽然在 .NET Framework 时代就知道不能在同步方法中调用异步方法,但我们却明知路有坑,偏向此路行。不是我们自讨苦吃,而是被迫无奈阅读全文
posted @ 2018-10-29 10:54 dudu 阅读(4092) 评论(47) 编辑
摘要: 最近在阅读 .NET Threadpool starvation, and how queuing makes it worse 这篇博文时发现文中代码中的一种 Task 用法之前从未见过,在网上看了一些资料后也是云里雾里不知其解,很是困扰。今天在程序员节的大好日子里终于想通了,于是写下这篇随笔分享给大家阅读全文
posted @ 2018-10-24 22:19 dudu 阅读(5943) 评论(42) 编辑