同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线(已暂时下线)

  • 时间:
  • 浏览:0
  • 来源:大发快3_快3登录_大发快3登录

为了验证 docker swarm 在高并发下的性能大问題,周一亲戚亲戚我们我们我们我们发布了使用 docker-compose 部署的 .net core 版博客站点(博文链接),但可能有1行代码请求后端 web api 时那末使用缓存,结果造成几滴 web api 请求发向跑后端服务的集群,悲剧的是这一集群是用 docker swarm 部署的,请求是用 nginx 容器转发的,结果压垮了 nginx ,几滴 后端请求 802 ,被迫回退至 windows + .net framework 版博客系统。

使用 docker-compose 部署那末再次出现 高并发下响应波特率极不稳定的性能大问題,以及后端 docker swarm 集群被几滴 请求压垮,可能基本验证了 docker swarm 的眼高手低,无法胜任高并发的场景。

在准备改用 k8s 部署就让,亲戚亲戚我们我们我们我们决定进行另4个最直截了当的对比,用同样配置的 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>

在 Startup 的 ConfigureServices 中允许 IIS InProcess Hosting 的同步 IO

services.Configure<IISServerOptions>(options =>
{
    options.AllowSynchronousIO = true;
});

不然会再次出现 错误

Synchronous operations are disallowed. Call WriteAsync or set AllowSynchronousIO to true instead

另外,就让发布后提交评论波特率慢是代码的大问題,.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 占用异常高的大问題估计亲戚亲戚我们我们我们我们写的代码有关,亲戚亲戚我们我们我们我们会进一步排查。

更新

18:45 左右,加了1台服务器,现在是6台服务器。

19:10 左右,可能CPU占用大问題,暂时下线。6台服务器访问量更低时,CPU 波动很大,见下图。

22:26 ,CPU 占用异常高大问題目前排查下来最大的嫌疑是 EnyimMemcachedCore ,明天会进行验证。

8:22 ,

相关博文:

  • 【故障公告】发布 .NET Core 版博客站点引起几滴 800 错误
  • 【网站公告】.NET Core 版博客站点第二次发布尝试
  • 暴风雨中的 online : .NET Core 版博客站点遭遇的高并发大问題进展
  • Powered by .NET Core 进展:验证高并发性能大问題嫌疑犯 docker swarm