hotfix

线上故障处理手册

北慕城南 提交于 2020-10-09 07:09:51
摘要 通常处理线上问题的三板斧是 重启-回滚-扩容 ,能够快速有效的解决问题,但是根据我多年的线上经验,这三个操作略微有些简单粗暴,解决问题的概率也非常随机,并不总是有效。这边总结下通常我处理应用中遇到的故障的解决方案。 原则 处理故障的时候必须遵循的一些原则 提早发现问题,避免故障扩散 故障的出现链路一般如下图所示 每一层都有可能出现问题,越底层出现问题,影响面越大。所以每一个层次都需要有相应的问题监控机制,这样越早发现问题,越能尽早解决故障,避免问题的扩散。比如服务依赖的一个数据库主库有问题了,如果等到用户报过来,这时候可能服务已经挂了几分钟了。再等你分析问题,解决问题,切换主备什么的,可能几分钟又过去了。影响访问比较大了。如果在数据库出问题时,就已经收到警报,迅速解决,可能没等用户报过来,问题解决了。 迅速广播 当收到一个P0警报,判断应用出现问题了,第一时间在组内广播。全部人员进入一级战斗状态,发现可能和其他依赖的服务/中间件/运维/云厂商有关,立即通知相关责任人,要求进入协同作战。 快速恢复 保留现场很重要,有助于发现root cause。但是发生故障了,必须要争分夺秒,不能为了保留现场浪费几分钟的时间去干什么dump内存,jstack线程状态的事。必须第一时间内先恢复服务,之后再根据当时监控数据,去找root cause 持续观察 为了解决问题,可能需要在线上进行了重启

Git工作使用笔记

怎甘沉沦 提交于 2020-08-15 03:35:49
分离头指针 当前分支图 切换到之前的某一次提交 执行命令 $ git checkout de11fa87ea 复制代码 提示,当前位于“分离头指针”状态 分支图 注意 在分离头指针状态下没有绑定分支 产生的commit不会被保存 分支切换后在分支图中看不到该commit 一段时间 后会被git自动清除 使用场景 尝试性做一些变更,可以随时丢弃 此处演示分离头指针丢失commit的情况和补救措施 丢失commit 使用IDE修改文件并提交,忽略所有警告,修改后分支图如下 此时接到其他需求,需要切换分支进行紧急修复 执行命令 $ git checkout master 复制代码 分支切换成功,并弹出提示和告警 Warning: you are leaving 1 commit behind, not connected to any of your branches: 199ac20 游离状态修改文件 If you want to keep it by creating a new branch, this may be a good time to do so with: git branch 199ac20 Switched to branch 'master' Your branch is up to date with 'origin/master'. 此时查看分支图

git命令行操作

久未见 提交于 2020-08-12 09:10:46
1、克隆远程仓库 git clone [仓库地址] ,但是这样只能克隆master分支的代码,如果我想克隆远程仓库中某一分支的代码怎么办呢?git clone -b [对应的远程分支名称] [仓库地址] 。   如克隆aspnetcore的3.0分支:git clone -b 3.0 https://github.com/dotnet/aspnetcore.git 2、本地切换分支,这里分几种场景:   1)要切换的分支存在,直接使用 git checkout [要切换的分支]   2)要切换的分支不存在,git checkout -b [要切换的分支],如本地仓库切换一个新的开发分支,该分支是为了开发数据统计功能,则可以这样切换:git checkout -b feature/data-statistics 【分支命名规范:需求特性开发可以使用feature/..;平时bug修复可以使用bugfix/..;线上紧急bug修复可以使用hotfix/..】   3) 上述切换方式为本地创建分支,该分支没有对应远程分支,若需要对应远程分支,则需要设置 git branch --set-upstream-to=origin/data-statistics data-statistics 。若想在创建分支的时候就对应怎么办呢?可以使用git checkout -b data

什么是分支,如何管理分支?

北城以北 提交于 2020-08-11 09:13:43
一、前言 如果有人问你,当下最流行的“版本管理系统”(Version Control System)是什么,那你一定要毫不犹豫的告诉他,非Git莫属。 Git 相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge)十分方便。有些传统的版本管理软件,分支操作实际上会生成一份现有的代码的物理拷贝,而Git只生成一个指向当前版本(又称”快照“)的指针,因此非常快捷易用。 但是,太方便了也会产生副作用,如果你不注意,很可能留下一个到处都是分支,完全看不出主干发展的脉络。而本篇文章正是为了避免开发分支混乱而生。 二、分支管理 1.历史分支 相对使用仅有的一个master分支,Gitflow工作流使用2个分支来记录项目的历史。master储存正式发布的历史,develop分支作为功能的集成分支。这样也方便master分支上的所有提交分配一个版本号。 2.功能分支 每个新功能位于一个自己的分支,这样可以push到中央仓库以备份和协作。但功能分支不是从master分支上拉出来的新分支,而是使用develop分支作为父分支。当新功能完成时,合并回develop分支。新功能的提交不直接与master交互。 3.发布分支 一旦develop分支上的功能到了发布日期,就从develop分支fork一个发布分支(一般叫release)

C#/VB.NET 将SVG图片添加到PDF、转换为PDF

雨燕双飞 提交于 2020-08-09 13:46:18
以下内容介绍在C# 程序中如何将SVG图片添加到PDF文档、以及如何将SVG图片转换为PDF文档。 一、环境准备 先下载PDF类库工具, Spire.PDF for .NET hotfix 6.5.6及以上版本 (下载时,注意版本信息)。下载后,解压文件,将lib文件夹下的Spire.Pdf.dll文件在VS中的“解决方案资源管理器”进行“添加引用”。另外,也可以通过Nuget下载。 dll引用效果如下: 用于测试的SVG图片,如下图: 二、代码示例 1. 添加SVG到PDF文档 C# using System.Drawing; using Spire.Pdf; using Spire.Pdf.Graphics; namespace InsertSVGImage_PDF { class Program { static void Main(string[] args) { //加载SVG图片 PdfDocument file1 = new PdfDocument(); file1.LoadFromSvg("Image.svg"); //创建一个PDF文档,添加一页 PdfDocument pdf = new PdfDocument(); pdf.AppendPage(); //根据SVG图片创建模板,并将模板绘制到PDF PdfTemplate template = file1

git命令行操作

旧巷老猫 提交于 2020-08-07 21:14:37
1、克隆远程仓库 git clone [仓库地址] ,但是这样只能克隆master分支的代码,如果我想克隆远程仓库中某一分支的代码怎么办呢?git clone -b [对应的远程分支名称] [仓库地址] 。   如克隆aspnetcore的3.0分支:git clone -b 3.0 https://github.com/dotnet/aspnetcore.git 2、本地切换分支,这里分几种场景:   1)要切换的分支存在,直接使用 git checkout [要切换的分支]   2)要切换的分支不存在,git checkout -b [要切换的分支],如本地仓库切换一个新的开发分支,该分支是为了开发数据统计功能,则可以这样切换:git checkout -b feature/data-statistics 【分支命名规范:需求特性开发可以使用feature/..;平时bug修复可以使用bugfix/..;线上紧急bug修复可以使用hotfix/..】   3) 上述切换方式为本地创建分支,该分支没有对应远程分支,若需要对应远程分支,则需要设置 git branch --set-upstream-to=origin/data-statistics data-statistics 。若想在创建分支的时候就对应怎么办呢?可以使用git checkout -b data

CheckPoint IPS更新失败

*爱你&永不变心* 提交于 2020-08-07 05:29:33
1.问题现象 IPS所有更新方式均失败: a) 自动更新失败; b) 手动触发更新失败; c) 离线更新包方式更新同样失败 提示信息如下: Failed to update IPS database IPS Update failed 2.尝试解决 2.1.SK153732 根据sk153732,操作如下: 以上解决办法以失败告终 2.2.更新Hotfix 更新hotfix到最新,仍然失败告终。 3.最终解决办法 保存如下代码,以.sql结尾(eg: fix_IpsUpdatePackageMap.sql) BEGIN; ALTER TABLE IpsUpdatePackageMap_data DISABLE TRIGGER ALL; UPDATE IpsUpdatePackageMap_data SET deleted=true WHERE name != (SELECT name FROM IpsUpdatePackageMap_data ORDER BY name DESC LIMIT 1) AND dlesession=0; ALTER TABLE IpsUpdatePackageMap_data ENABLE TRIGGER ALL; COMMIT; 上传到SMS,执行如下命令: psql_client cpm postgres -f fix

Git Flow分支策略与Azure DevOps相关功能简介

情到浓时终转凉″ 提交于 2020-08-04 20:20:49
想了很久,还是写这么一篇文章来总结一下有关分支策略和DevOps的一些内容吧。其实,DevOps相关的内容并不是我的工作范围,不过对于敏捷开发、DevOps、项目管理等等这一系列的与开发过程相关的内容,我还是有些经验的,也就抽时间跟大家分享一下吧。 Git Flow应该是很多基于Git分布式版本控制系统的项目所实践的一种开发流程,当然,很多人对于Github非常熟悉,甚至平时工作就是基于Github的。在此我也就不多介绍Git以及Github的概念了,只需要知道Github是基于Git的一个服务供应商,目前已被微软收购。Git Flow就是由Vincent Driessen基于Git这一版本控制系统所总结出来的一套可行的、能够满足很多项目开发需求(注意:不是大多数项目)的敏捷开发流程,英语水平好的朋友可以参考阅读Vincent的原文:《 A successful Git branching model 》。 Git Flow Git Flow通常会用在有具体的release发布的概念的项目上,简言之就是类似于以前能够给客户提供安装包的项目,对于SaaS项目,Git Flow还是太重了,而且不同环境、多租户的部署策略也与Git Flow有一些差别。因此,团队还是应该根据自己的实际情况来选择合理的开发流程,这里所介绍的内容也是仅供参考。下图(来自《A successful Git

Flutter 和小程序混编

天大地大妈咪最大 提交于 2020-08-04 19:54:15
背景 本文我们将开一下脑洞,在 Flutter 工程基础上下集成及运行小程序方案。 先看一下效果如下: 新建 Flutter 样例工程 Flutter 的安装 Flutter 的安装可参考 https://flutterchina.club/get-started/install/ 具体上主要执行以下三步即可。本文将使用 Flutter1.12.hotfix8 稳定版作为开发环境。 下载 FlutterSDK 配置 PATH 环境路径 flutter doctor 检查环境 新建 Flutter 工程 flutter create --template=app --org=com.finogeeks.flutter --project-name=mini_flutter -i objc -a java ./mini_flutter 执行以上命令后,正常将会提示以下信息 All done! [✓] Flutter: is fully installed. (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale zh-Hans-CN) [✓] Android toolchain - develop for Android devices: is fully installed. (Android SDK

如何选择 Git 分支模式?

橙三吉。 提交于 2020-07-28 12:42:37
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 阿里妹导读:编写代码,是软件开发交付过程的起点,发布上线,是开发工作完成的终点。代码分支模式贯穿了开发、集成和发布的整个过程,是工程师们最亲切的小伙伴。那如何根据自身的业务特点和团队规模来选择适合的分支模式呢?本文分享几种主流 Git 分支模式的流程及特点,并给出选择建议。 分支的目的是隔离,但多一个分支也意味着维护成本的增加。我们可以分别从开发和发布分支的多寡,做个简单组合,即: 主干开发,主干发布。 分支开发,主干发布。 主干开发,分支发布。 分支开发,分支发布。 设想两个不同的场景: 如果一个软件,只有一个开发者,只需要一个发布版本,那他需要什么样的分支模式? 如果一个软件,有 10 位开发者,需要支持多个版本,那他们又需要什么样的分支模式? 一个好的分支模式,可以大大提高软件的开发、集成和发布效率。选择什么样的分支策略,是每一个开发团队开始工作时面临的第一个问题。那么,选择什么样的分支模式才适合我们呢?在回答这个题之前,我们先了解一下几种常见的分支模式。 主流的分支模式 常见的分支模式有 TBD(即主干开发模式)、Git-Flow 模式、Github-Flow 模式及 Gitlab-Flow 模式。 TBD(主干开发模式) 即所有开发者,仅在一个开发分支(即主干