昨天晚上 18:15 左右我们发布了跑在 Windows 上 .NET Core 博客系统,本想与 .NET Framework 版进行同“窗”的较量,结果刚发布上线就发现 CPU 占用异常高,发布不到1小时就下线了,根本不是一个级别的较量,或者说 .NET Core 连较量的资格都没有,刚上台就趴下了. 如果与 Linux 上的 .NET Core 博客系统(docker swarm 与 docker-compose 部署方式)相比,也是不是一个级别的较量,部署在 Linux 上时是访问高峰撑…
今天早上,我们修改了博客程序中的1行代码,将 services.AddDbContextPool 改为 services.AddDbContext ,去掉 DbContextPool . 然后奇迹出现了 —— 单台4个8G的服务器,800 左右的 QPS 不在话下,CPU 的稳健与 .NET Framework 版有的一拼. 到发布博文时间为止,最高可以撑住 1300 的 QPS . DbContextPool 相关链接: EF Core 小坑:DbContextPool 会引起数据库连接池连接…
侯爵老师视频详解:如何让 Windows 上的命令行工具更好用 很多 Windows 用户在打开这个小黑窗时,都会情不自禁的感慨,「实在是太丑了--」 实际上如果你用的是 Windows 8 或 Windows 10 系统,就可以使用到 powershell,它是 cmd小黑窗的进阶版本,支持了一些高级语法. 上次的 Mac 终端推荐的文章里说过,一个终端 Terminal + 一个好的 Shell = 一个好的使用体验. 01 选择一个 Terminal 在 Windows 平台上最推荐的终端…
为了验证 docker swarm 在高并发下的性能问题,周一我们发布了使用 docker-compose 部署的 .net core 版博客站点(博文链接),但由于有1行代码请求后端 web api 时没有使用缓存,结果造成大量 web api 请求发向跑后端服务的集群,悲剧的是这个集群是用 docker swarm 部署的,请求是用 nginx 容器转发的,结果压垮了 nginx ,大量后端请求 502 ,被迫回退至 windows + .net framework 版博客系统. 使用 do…
系列目录     [已更新最新开发文章,点击查看详细] 本文介绍如何在 Windows 上安装 .NET. .NET 由运行时和 SDK 组成. 运行时用于运行 .NET 应用,应用可能包含也可能不包含它. SDK 用于创建 .NET 应用和库. .NET 运行时始终随 SDK 一起安装.当前最新版本的 .NET 是 5.0.点击此处,下载.NET Core/.NET. 支持的版本 下表列出了当前支持的 .NET 版本以及支持它们的 Windows 版本. 这些版本在 .NET 版本达到支持终止…
目标:完成windows上开发的dotnet core程序部署至linux服务器上(Ubuntu 14.04) windows上开发dotnet core很简单,安装好VS2017,建立相关类型的项目进行开发即可. Linux服务器中需要做以下几个工作: 1.安装dotnet core, 运行dotnet程序必备条件. 2.安装supervisor守护进程,可以帮助你自动启动站点. 3.安装nginx做代理 1. 安装dotnet core #依次执行下面的命令,安装的版本有问题的话,按照错误提…
微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和Linux操作系统.其中.NET Core最受瞩目,为一款跨平台.开源且模块化的.NET平台,可以用来搭建web应用.微服务.创立应用库和控制台. ASP.NET 5已被微软改成了 ASP.NET Core 1.0,.NET 5就是现在的.NET Core 1.0,EF7(Entity Framew…
写一个Windows上的守护进程(5)文件系统重定向 在Windows上经常操作文件或注册表的同学可能知道,有"文件系统/注册表重定向"这么一回事.大致来说就是32位程序在64位的Windows上运行时,操作系统会把对System32文件夹的访问重定向到SysWow64下,把对HKEY_LOCAL_MACHINE\SOFTWARE的访问重定向到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下.当然不止这些路径和注册表.详情请查看MSDN:https://…
写一个Windows上的守护进程(3)句柄的管理 在Windows中编程,跟HANDLE打交道是家常便饭.为了防止忘记CloseHandle,我都是使用do-while-false手法: void f() { HANDLE h = NULL; do { } while (false); if (h) { CloseHandle(h); h = NULL; } } HANDLE一多,就得写好几段长得一样的清理代码,比较麻烦.仔细一想,这个其实很容易写一个关闭器——在出作用域时自动关闭: class…
写一个Windows上的守护进程(2)单例 上一篇的日志类的实现里有个这: class Singleton<CLoggerImpl> 看名字便知其意--单例.这是一个单例模板类. 一个进程通常只有一个日志类实例,这很适合使用单例模式.那么如何设计一个好的单例呢? 通常我们在网上看到有这样的实现: class SingletonAA { public: static SingletonAA& get_instance_ref() { static SingletonAA _inst; r…