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

继续以流水账的方式向大家汇报,自从上周六上午将 .net core 版博客站点从 windows 部署切换到 linux 上的 docker-compose 部署后,到目前一直在线。
Linux 上没有出现在 windows 上遇到的一夜之后内存占用持续过高的 GC 偷懒情况,但这并不能说明 .net core gc 在 windows 有问题,可能是由于某种情况让 gc 觉得不需要回收,由于我们的 .net core 版博客系统只会部署在 linux 上,所以 windows 上的问题不继续排查。
数据库服务器 CPU 100% 还是会出现,问题非常奇怪,而且很难复现,目前排查没有进展。上周五下午 18:00 左右,遇到的 CPU 100% 问题更是诡异,服务器没有接入流量,在容器启动后一个 curl 请求就让数据库服务器 CPU 100%,也有可能是巧合。
在 Linux 上遇到了一个新的问题,有时阿里云负载均衡会报 502 错误,刷新一下就会好,.NET Core 日志中没有对应的日志,目前还没找到问题的线索。
我们遇到的高并发性能问题也引起了微软 .NET Core 团队的关注,并得到了他们的技术支持,帮我们分析了通过 dotnet-trace 收集的 profile 数据(收集数据期间没有发生数据库 CPU 100%), 但没有发现问题的线索。
dotnet-trace 在容器内收集 prfile 数据的命令如下
export PATH="$PATH:/root/.dotnet/tools
dotnet-trace list-processes
dotnet-trace collect --process-id <pid> --providers Microsoft-Windows-DotNETRuntime
注:容器需要使用 .net core sdk 镜像才能安装 dotnet-trace 。
今天上午下午的访问高峰,行驶平稳。
对于 100% 与 502 问题,我们会进一步排查。
另外,我们也在优化程序减少 CPU 的消耗。
更新:
502 问题怀疑是负载均衡中某台服务器 CPU 出现波动突然跳到 100% ,如果用的是 windows ,表现是 503 ;现在用的是 linux ,表现就是 502 。
Powered by .NET Core 系列博文:
- 【故障公告】发布 .NET Core 版博客站点引起大量 500 错误
- 【网站公告】.NET Core 版博客站点第二次发布尝试
- 暴风雨中的 online : .NET Core 版博客站点遭遇的高并发问题进展
- Powered by .NET Core 进展:验证高并发性能问题嫌疑犯 docker swarm
- 同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线
- 做梦也没有想到:Windows 上的 .NET Core 版博客系统表现更糟糕
- 峰回路转:去掉 DbContextPool 后 Windows 上的 .NET Core 版博客表现出色
- Powered by .NET Core 进展0815:第5次发布尝试(Windows部署)
- 高速开车换底盘记:Windows 与 Linux 部署都抗住了,但修车任务艰巨
园友相关博文:
Powered by .NET Core 进展0819:高速开车车况汇报的更多相关文章
- Powered by .NET Core 进展:第5次发布尝试(Windows部署)
(图注:Windows 自带的性能监控,红色表示 CPU 占用,绿色表示 QPS) 今天中午 12:30 左右,我们进行了 .NET Core 博客站点的第5次发布(页脚会显示"Powere ...
- Powered by .NET Core 进展:用 docker-compose 验证高并发问题嫌疑犯 docker swarm
相关博文: [故障公告]发布 .NET Core 版博客站点引起大量 500 错误 [网站公告].NET Core 版博客站点第二次发布尝试 暴风雨中的 online : .NET Core 版博客站 ...
- 高速开车换底盘记:Windows 与 Linux 部署都抗住了,但修车任务艰巨
抱歉,又是一篇流水账,在排查问题的焦头烂额中写博客的确是一个挑战,望大家见谅. 今天园友溪源More发了一篇博文博客园翻车启示录,而翻车之后的最新进展是——昨天下午我们又把 .net core 引擎的 ...
- k8s 开船记-全站登船:Powered by .NET Core on Kubernetes
今天 18:30 左右,我们迈出了 kubernetes 航行的关键一步——全站登船,完成了全站应用从 docker swarm 集群向 k8s 集群的切换,以前所未有的决心与信心重新开起这艘巨轮,而 ...
- 行车记+翻车记:.NET Core 新车改造,C# 节能降耗,docker swarm 重回赛道
非常抱歉,10:00~10:30 左右博客站点出现故障,给您带来麻烦了,请您谅解. 故障原因与博文中谈到的部署变更有关,但背后的问题变得非常复杂,复杂到我们都在怀疑与阿里云服务器 CPU 特性有关. ...
- 同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线
为了验证 docker swarm 在高并发下的性能问题,周一我们发布了使用 docker-compose 部署的 .net core 版博客站点(博文链接),但由于有1行代码请求后端 web api ...
- 做梦也没有想到:Windows 上的 .NET Core 表现更糟糕
昨天晚上 18:15 左右我们发布了跑在 Windows 上 .NET Core 博客系统,本想与 .NET Framework 版进行同“窗”的较量,结果刚发布上线就发现 CPU 占用异常高,发布不 ...
- 峰回路转:去掉 DbContextPool 后 Windows 上的 .NET Core 版博客表现出色
今天早上,我们修改了博客程序中的1行代码,将 services.AddDbContextPool 改为 services.AddDbContext ,去掉 DbContextPool . 然后奇迹出现 ...
- Introducing .NET Core
At connect(), we announced that .NET Core will be entirely released as open source software. I also ...
随机推荐
- mysql重启遇到的问题
不知道是不是每次更新 MySQL 软件之后都需要执行数据库升级指令?在我进行过的几次软件升级之后,总会在 MySQL 的日志中见到 “[ERROR] Missing system table mysq ...
- CitusDB UPSERT
CitusDB的upsert功能 postgresql9.5 版本支持 "UPSERT" 特性, 这个特性支持 INSERT 语句定义 ON CONFLICT DO UPDATE/ ...
- JS时间处理,获取天时分秒。以及浏览器出现的不兼容问题
//获取时间的天,小时,分钟,秒 function ToTime(second) { second = second / ; var result ; ) % ; ) % ; * )); ) { re ...
- java高并发系列 - 第15天:JUC中的Semaphore,最简单的限流工具类,必备技能
这是java高并发系列第15篇文章 Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能 ...
- [剑指offer] 23. 二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路: 解法一:递归 二叉搜索树,后序遍历的数组中 ...
- nginx CRLF(换行回车)注入漏洞复现
nginx CRLF(换行回车)注入漏洞复现 一.漏洞描述 CRLF是”回车+换行”(\r\n)的简称,其十六进制编码分别为0x0d和0x0a.在HTTP协议中,HTTP header与HTTP Bo ...
- Java EE.JSP.指令
JSP的指令是从JSP向Web容器发送消息,它用来设置页面的全局属性,如输出内容类型等. JSP的指令的格式为:<%@ 指令名 属性="属性值"%> 1.page指令 ...
- Centos7 安装VNCserver&图形界面
1.安装软件包. yum install tigervnc-server -y yum groups install GNOME yum groups install "Virtualiza ...
- Flink实战(八) - Streaming Connectors 编程
1 概览 1.1 预定义的源和接收器 Flink内置了一些基本数据源和接收器,并且始终可用.该预定义的数据源包括文件,目录和插socket,并从集合和迭代器摄取数据.该预定义的数据接收器支持写入文件和 ...
- 林大妈的JavaScript基础知识(二):编写JavaScript代码前的一些简单工作
在介绍JavaScript语法前,我们需要知道,学习语法必须要多利用手敲代码来巩固记忆.因此,由于JavaScript的特性,它不能像C++和Java一样独立地编译及运行,我们需要在调试运行JavaS ...