抱歉,又是一篇流水账,在排查问题的焦头烂额中写博客的确是一个挑战,望大家见谅。

今天园友溪源More发了一篇博文博客园翻车启示录,而翻车之后的最新进展是——昨天下午我们又把 .net core 引擎的博客越野车开上了高速,现在依然行驶在高速上,今天上午我们边开车边给车换了个底盘,把 windows 换成了 linux(见页脚"Powered by .NET Core 3.0 Preview 8 on Linux"),从中发现虽然车勉强能开,但修车任务艰巨。

流水账开始。

昨天下午,部署在 windows 上的 .net core 版博客站点成功扛过了访问高峰,当时用了7台4核8G服务器,与 .net framework 版使用的服务器数量一样。

由于在 windows 上发布太麻烦了,不仅要复制所要发布的文件,还要停止 IIS 站点才能复制,不然会出现下面的错误提示,这点比不上 .net framework 。

cp: cannot create regular file '/c/websites/www.cnblogs.com-v2/Mapster.dll': Device or resource busy

于是,昨天晚上我们就准备 linux 上的 docker-compose 部署,并进行了试发布,将1台部署好的 linux 服务器加入了线上的负载均衡。

docker-compose pull
docker-compose down --remove-orphans
docker-compose --compatibility up --force-recreate -d

之后出现的异常情况让我们不敢自己的双眼,数据库服务器 CPU 100% 的问题在 Linux 上没有使用 DbContextPool 的情况下昔日重来了。

2019-08-15 21:00:15.320 [Error] Failed executing DbCommand ("30,360"ms) [Parameters=["..."], CommandType='Text', CommandTimeout='30']"
...
Microsoft.EntityFrameworkCore.Database.Command
2019-08-15 21:00:15.321 [Error] An exception occurred while iterating over the results of a query for context type '"EfUnitOfWork"'.
System.Data.SqlClient.SqlException (0x80131904): Timeout expired.
The timeout period elapsed prior to completion of the operation or the server is not responding.
---> System.ComponentModel.Win32Exception (258): Unknown error 258
at System.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__126_0(Task`1 result)

在残酷的事实面前,我们不得不承认我们错怪了 DbContextPool ,这个诡异的问题是在某种未知的情况下偶然触发的,昨天我们去掉 DbContextPool 后没有出现问题,只是因为没有触发。

今天上午,我们将 docker-compose 部署 .NET Core 站点的 linux 服务器逐步上线了,在 11:00 左右全部换成了 linux 服务器,一共用了 6 台服务器,扛过了上午的访问高峰。.net framework 版博客用的也是 6 台服务器,所以我们就默认部署了 6 台,linux 上的 .net core 版博客究竟多少台服务器可以撑住,我们还没有验证过。

其中 1 台 linux 服务器的 CPU 占用情况如下:

今天早上还发现了 Windows 服务器的一个异常情况,一夜之后,8G的内存几乎被消耗殆尽,之前用 .net framework 版从来没有出现过的问题,不知是昨天夜里 .net core GC 偷懒了,还是我们写的代码存在内存泄露问题?

流水账就写到这。

接下来我们最艰巨的修车任务是排查数据库服务器 CPU 100% 的诡异问题。

Powered by .NET Core 系列博文:

高速开车换底盘记:Windows 与 Linux 部署都抗住了,但修车任务艰巨的更多相关文章

  1. tomcat配置外部静态资源映射路径(windows和Linux部署)

    如果你不想用ngnix配置的话,只单独使用tomcat的话可以看看这篇文章,接下来开始 使用场景 1.单机开发有时侯如果放在war下每次clean都会清理当前项目下静态文件特别折腾. 2.只有启动to ...

  2. Powered by .NET Core 进展0819:高速开车车况汇报

    继续以流水账的方式向大家汇报,自从上周六上午将 .net core 版博客站点从 windows 部署切换到 linux 上的 docker-compose 部署后,到目前一直在线. Linux 上没 ...

  3. Windows与Linux文件系统互访的几种方法

    首先,我们知道基于文件的几种服务:ftp,sftp,这两种服务都是文件传输服务,偏重于网络传输,并不是实时互访.通常,我们需要在远程和本地 同时操作同一个目录,如:在Windows下使用各种强大的ID ...

  4. windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)

    前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...

  5. python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)

    问题: python脚本涉及到复制文件,而我们需要兼容Windows.linux和mac环境 (Windows和linux的路径分隔符不同:通过os.path.sep查看分隔符)   如果用[路径名+ ...

  6. 【转】进程间通信方式总结(windows 和linux)

    平时看的书很多,了解的也很多,但不喜欢总结,这不昨天面试的时候被问到了进程间通信的方式,因为没有认真总结过,所以昨天答得不是特别好.现在将linux和windows的进程间通信方式好好总结一下.    ...

  7. windows和linux换行规则的区别

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符.要是在这 ...

  8. [转帖]Windows和Linux对决(多进程多线程)

    Windows和Linux对决(多进程多线程) https://blog.csdn.net/world_2015/article/details/44920467 太长了 还没看完.. 还是没太理解好 ...

  9. BesLyric 全新版本下载 ( windows \ mac \ linux )

    导读 BesLyric , 一款专门制作 网易云音乐 LRC 滚动歌词的软件! 搜索.下载.制作 歌词更方便! 很荣幸地,自 beslyric 2017 年开发推出以来,得到了很多云村村民的肯定,现在 ...

随机推荐

  1. 最新 centos7下zabbix 监控redis状态

    准备 先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent zabbix-server 192.168.1.70 centos7.2 zabbix-agent 192.16 ...

  2. 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority queue)

    堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...

  3. 查看http请求的header信息

    1 下载chrome浏览器 chrome浏览器是google开发的一块非常绑定浏览器.chrome浏览器下载地址. 2 通过chrome控制台查看http请求的header信息 2.1 打开chrom ...

  4. RSA premaster secret error 错误解决

    报错信息如下: Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法使用安全套接字层(SSL)加密与 SQL Serve ...

  5. 个人永久性免费-Excel催化剂功能第61波-快速锁定解锁单元格及显示隐藏公式

    Excel的所有功能都是需求导向的,正因为有客户在企业管理的过程中,有这样的需求出现了,然后相应的Excel就出现了相应的功能来辅助管理,学习Excel的功能,其实真的可以学习到先进企业的许多的管理思 ...

  6. Excel催化剂开源第25波-Excel调用百度AI,返回AI结果

    现成的这些轮子,无需调用网页,直接本地离线即可生成). 当然在AI时代,少不了各种AI接口的使用场景,普通开发者只需聚焦在自己的业务场景上,这些AI底层技术,只需类似水煤电一般去BAT这些大厂那里去消 ...

  7. CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包      # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel      # ...

  8. C#编程.函数.参数

    详细内容请参见<C#入门经典(第4版)>p101页 1.参数匹配 在调用函数时,必须使参数与函数定义中指定的参数完全匹配,这意味着要匹配参数的类型.个数.和顺序. 注:函数签名由函数的名称 ...

  9. 《VR入门系列教程》之22---GearVR SDK代码剖析

    GearVR SDK代码剖析     接下来我们来了解一下GearVR开发包的底层代码,它底层的代码和之前在第三章中讲的桌面SDK代码非常类似,当然,也有许多不同的地方.     首先,我们看看如何构 ...

  10. CIDR的介绍

    CIDR的介绍: CIDR(Classless Inter-Domain Routing,无类域间路由选择)它消除了传统的A类.B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空 ...