同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线
为了验证 docker swarm 在高并发下的性能问题,周一我们发布了使用 docker-compose 部署的 .net core 版博客站点(博文链接),但由于有1行代码请求后端 web api 时没有使用缓存,结果造成大量 web api 请求发向跑后端服务的集群,悲剧的是这个集群是用 docker swarm 部署的,请求是用 nginx 容器转发的,结果压垮了 nginx ,大量后端请求 502 ,被迫回退至 windows + .net framework 版博客系统。
使用 docker-compose 部署没有出现高并发下响应速度极不稳定的性能问题,以及后端 docker swarm 集群被大量请求压垮,已经基本验证了 docker swarm 的眼高手低,无法胜任高并发的场景。
在准备改用 k8s 部署之前,我们决定进行一个最直截了当的对比,用同样配置的 windows 服务器部署 .net core 版博客系统(同“窗”就是指这个),对比一下 .net core vs .net framework 的性能,看看是否真的是“青出于蓝而胜于蓝”?
直接在部署 .net framework 博客系统的 windows 服务器上安装 .net core sdk 并部署 .net core 版博客系统,“同窗”名副其实,一点不参假,不仅用的都是“Windows Server 2016 数据中心版 64位英文版”,而且系统环境配置都一样。asp.net core 站点部署方式使用的是 IIS InProcess Hosting :
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
另外,之前发布后提交评论速度慢是代码的问题,.net core 中没有 .net framework 中的 HostingEnvironment.QueueBackgroundWorkItem ,迁移时我们偷懒了,没有把提交评论的一些操作放到队列中处理。今天我们改进了代码,用 Coravel 的队列功能实现了,现在提交速度有了明显的改善。
Windows 上的 .net core 版博客站点已于 18: 15 左右发布上线,它的表现如何,请看明天上午下午访问高峰的演出。
发布后立即发现 .net core 版的 CPU 消耗明显高于 .net framework 版
发布前 .net framework 版用了4台4核8G的服务器,CPU 占用情况如下
发布后 .net core 版用了5台4核8G的服务器,且访问量更低,CPU 占用情况如下
这个 CPU 占用异常高的问题估计我们写的代码有关,我们会进一步排查。
相关博文:
- 【故障公告】发布 .NET Core 版博客站点引起大量 500 错误
- 使用NSSM把.Net Core部署至 Windows 服务
- 一个新的Windows部署博客
- windows 2008 server web服务器的搭建以及站点的简单部署
- 部署netcore之Linux上 发布.Net Core
- QT程序在windows下部署发布
- .net core 2.x - docker(for windows)-linux配置及项目+SqlServer发布
- Windows 之 手机访问 PC 端本地部署的站点
- Windows Live Writer博客发布工具测试在本地发布博客文章到csdn
- 体验Windows Live Writer来在客户端上发布CSDN的博客文章
- .net core 发布/部署 502.5解决方法
- 一个部署上线的问题:websphere发布war包时和以往不同,突然异常缓慢耗时
- Windows Azure Traffic Manager (2) Windows Azure Traffic Manager (2) 部署站点
- 将Windows系统编译的.NET Core程序发布到Ubuntu系统
- .net core 2.0学习笔记(二):部署到Windows和Liunx系统
- 用Windows live Writer 2012发布51cto博客
- windows 8 系统部署IIS并发布网站
- 可以通过 windows live writer 发布我的博客了
- Windows Live Writer发布日志文档到SharePoint博客(1)
- 使用Windows Live Writer 2011发布文章到51cto博客