【网站公告】.NET Core 版博客站点第二次发布尝试
在上次发布失败后,很多朋友建议我们改用 k8s ,但我们还是想再试试 docker swarm ,实在不行再改用 k8s 。
在改进了 docker swarm 集群的部署后,我们准备今天 17:30 左右进行一次发布尝试。
docker swarm 集群是我们使用阿里云服务器自己搭建的,这次进行了3方面的改进。
1. 升级了 worker 节点服务器的配置
worker 节点由6台4核8G服务器换成了3台8核16G服务器,基于3点考虑:
1)提高单台服务器的处理能力;
2)提高服务器的网络处理能力,阿里云的服务器配置越高,网络处理能力越强;
3)减少服务器数量可以减少 docker swarm 节点之间的通信开销。
2. 升级了 docker engine,由 18.09.4 升级至 19.03.1
wget -c https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm && \
wget -c https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-19.03.1-3.el7.x86_64.rpm && \
wget -c https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-19.03.1-3.el7.x86_64.rpm && \
yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm && \
yum install -y docker-ce-19.03.1-3.el7.x86_64.rpm && \
yum install -y docker-ce-cli-19.03.1-3.el7.x86_64.rpm
3. nginx 改用 host 网络模式部署
ports:
- target: 80
published: 80
protocol: tcp
mode: host
另外,改进了博客系统缓存部分的代码,解决了新旧版切换时的缓存冲突问题。
这次发布如果遇到问题,我们可以快速回退到旧版。
如果在发布过程中出现问题影响您的正常访问,请您谅解。
------------------------------------------
发布过程记录
17:40 使用 nginx 转发,切换了1/5不到的流量就出现了1秒延迟的问题。
18:20 改为 kestrel 以端口映射的方式直接监听 80 端口,切换了1/3左右的流量,未出现延迟1秒的问题。
18:33 所有流量都已切换,未出现延迟1秒的问题。
以下是发布过程中服务器同时连接数监控,使用 nginx 转发时,当同时连接数超过 40K ,所有请求都出现1秒延迟的问题。当改为 kestrel 直接监听80端口后,即使同时连接数超过 100K ,也没出现1秒延迟的问题。没想到1秒延迟竟然是 nginx 的问题(或者是 nginx 对 docker swarm 的支持问题),不是 docker swarm 网络本身的问题。
21:00 今天发布后一直在线上,如果明天上午的访问高峰能撑住,那就说明发布成功了。
8月8日
9:15 左右,服务器同时连接数超过 130K ,3台服务器撑不住,加了1台服务器。
9:26 左右,memcached 客户端 socketPool 满了,将 maxPoolSize 由 500 修改为 800 。
2019-08-08 09:24:30.781 [Error] Pool is full, timeouting. 10.0.78.124:11211
10:15 左右,docker swarm 集群有增加了1台8核16G的服务器,目前一共5台 worker 节点。
11:05 更新:每台服务器上博客应用容器的的 CPU 消耗在 5-6 核,内存消耗在 1G 与 1.5G 之间。
11:05 左右,负载没有下降,我们什么也没动,响应速度却出奇地稳定,并且与访问低峰时一样飞快。
13:30 更新:今天上午访问高峰时单台服务器同时连接数最高达到21万(监控数据来自阿里云云监控)。
17:10 更新:今天下午访问高峰期间,访问速度很不稳定。我们正在考虑下一步的对策。
17:30 左右,当访问量回落到一定程度后, 访问速度恢复正常。
【网站公告】.NET Core 版博客站点第二次发布尝试的更多相关文章
- 同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线
为了验证 docker swarm 在高并发下的性能问题,周一我们发布了使用 docker-compose 部署的 .net core 版博客站点(博文链接),但由于有1行代码请求后端 web api ...
- 【故障公告】发布 .NET Core 版博客站点引起大量 500 错误
非常抱歉,今天上午的博客站点故障给大家带来了很大的麻烦,请大家谅解.这次故障是我们发布 .NET Core 版博客站点引起的,虽然我们进行了充分的准备,但还是低估了高并发下的复杂问题. 以下是故障背景 ...
- 暴风雨中的 online :.net core 版博客站点遭遇的高并发问题进展
今天暴风雨袭击了杭州,而昨天暴风雨(高并发问题)席卷了园子,留下一片狼藉. 在前天傍晚,我们进行了 .net core 版博客站点的第二次发布尝试,在发布后通过 kestrel 直接监听取代 ngin ...
- 峰回路转:去掉 DbContextPool 后 Windows 上的 .NET Core 版博客表现出色
今天早上,我们修改了博客程序中的1行代码,将 services.AddDbContextPool 改为 services.AddDbContext ,去掉 DbContextPool . 然后奇迹出现 ...
- [故障公告]14:39-15:39博客站点部分负载均衡遭遇3次20G以上的流量攻击
非常抱歉,今天下午14:39-15:39左右,博客站点的部分负载均衡遭遇3次20G以上的流量攻击,造成很多用户不能正常访问.由此给您带来麻烦,请您谅解. 攻击的过程是这样的: 14:39,第1次攻 ...
- Powered by .NET Core 进展:第5次发布尝试(Windows部署)
(图注:Windows 自带的性能监控,红色表示 CPU 占用,绿色表示 QPS) 今天中午 12:30 左右,我们进行了 .NET Core 博客站点的第5次发布(页脚会显示"Powere ...
- 【故障公告】博客站点再次出现故障,最终回退 .NET 5.0 恢复正常
自从博客系统升级 .NET 5.0 之后遇到的诡异故障(一.二.三.四),今天它又出现了,就在前天刚刚故障之后, 就在昨天 .NET 5.0 正式版刚刚发布之后,出现了. 今天晚上我们在 19:30 ...
- 【故障公告】redis 服务器宕机引发博客站点故障
非常抱歉,今天下午 17:10~17:40 左右,由于博客系统所使用的 redis 服务器宕机,造成博客站点无法正常访问,由此给您带来很大的麻烦,请您谅解. 我们会针对这次故障改进 redis 服务器 ...
- 故障公告:IIS应用程序池停止工作造成博客站点无法访问
非常抱歉,今天凌晨博客站点负载均衡中所有3台服务器的IIS应用程序池突然停止工作,造成 1:20-7:45 左右博客站点无法正常访问,由此给您带来很大的麻烦,请您谅解. 服务器操作系统是 Window ...
随机推荐
- 简单的scrapy实例
前天实验室的学长要求写一个简单的scrapy工程出来,之前也多少看了点scrapy的知识,但始终没有太明白,刚好趁着这个机会,加深一下对scrapy工作流程的理解.由于临近期末,很多作业要做(其实.. ...
- 微服务-springboot日志配置
springboot 默认会加载classpath:logback-spring.xml文件. springProfile 中的name名字对应application-xx.properties 中的 ...
- 十分钟教你理解TypeScript中的泛型
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://blog.bitsrc.io/understanding-generics-in-t ...
- scrapy基础知识之 CrawlSpiders爬取lagou招聘保存在mysql(分布式):
items.py import scrapy class LagouItem(scrapy.Item): # define the fields for your item here like: # ...
- 开源FTP/SFTP客户端 FileZilla v3.31.0 绿色便携版
下载地址:点我 基本介绍 FileZilla是一种快速.可信赖的FTP客户端以及服务器端开放源代码程式,具有多种特色.直觉的接口.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端 ...
- P2344 奶牛抗议 离散化+前缀和+动态规划+树状数组
[题目背景] Generic Cow Protests, 2011 Feb [题目描述] 约翰家的N 头奶牛正在排队游行抗议.一些奶牛情绪激动,约翰测算下来,排在第i 位的奶牛的理智度为Ai,数字可正 ...
- Bzoj 2064 分裂 题解
2064: 分裂 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 570 Solved: 350[Submit][Status][Discuss] De ...
- NOI 2011 兔农 题解
事先声明,本博客代码主要模仿accepoc,且仅针对一般如本博主一样的蒟蒻. 这道题不得不说数据良心,给了75分的水分,但剩下25分真心很难得到,因此我们就来讲一讲这剩下的25分. 首先,有数据可知他 ...
- 【bfs基础】①
bfs,即广度优先搜索,主要通过队列(queue)进行操作. 稍微解释一下,队列是一种基础数据结构,其形态类似于一支长长的队伍,大概如下: 在C++中,队列的头文件定义为:#include<qu ...
- 【bfs】单向公路-C++
描述 某地区有许多城镇,但并不是每个城镇都跟其他城镇有公路连接,并且有的公路并不能双向行驶.现在我们把这些城镇间的公路分布及允许的行驶方向告诉你,你需要编程解决通过公路是否可以从一个城镇到达另一个城镇 ...