草庐IT

不懂优雅停机,搞挂了线上服务该咋办?

公司项目是用consul进行注册的,在发布微服务的时候,总是会导致调用方出现一定几率的调用失败。一开始百思不得其解,后来咨询了资深的同事才知道:原来是服务下线的时候没有优雅停机,没有去consul将自己下线再停机,导致调用方拿到了旧的调用地址,导致调用失败! 看来优雅停机还是一个蛮重要的知识点,可不能忽略,今天就让我们来盘盘它吧!一、什么是优雅停机?在Linux世界里,一切都是资源。当我们启动一个JVM的时候,我们就加载了许多的资源。而当我们关闭JVM的时候,JVM只会释放内存这个资源,而其他资源是不会释放的,例如:网络连接、文件句柄等等。Linux的网络连接数、文件句柄数都是有限的,如果我们

运维:Centos8安装Supervisor守护Nginx进程笔记

今天给大家分享Centos8操作系统下如何安装supervisor进程管理程序并守护Nginx进程,希望对大家能有所帮助!一、supervisor介绍1、简介Supervisor是基于Python语言开发的一套的进程管理程序,它可以将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时支持自动重启。2、工作原理它主要是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和预警

携程Service Mesh性能优化实践

作者简介本文作者佐思、烧鱼、Shirley博,来自于携程CloudContainer团队,主要从事ServiceMesh在携程的落地,负责控制面的可用性及优化建设,以及推进各类基础设施服务的云原生化。该团队负责K8s容器平台的研发和优化工作,专注于推动基础设施云原生架构升级,以及创新产品的研发和落地。一、背景为了支撑业务的高速发展,从17年开始,携程内部逐步推进应用容器化改造与业务上云工作,同期携程技术架构经历了从集中式单体应用到分布式微服务化的演进过程。随着Kubernetes的不断发展和推广,服务网格(ServiceMesh)在近几年也变得很流行。而ServiveMesh之所以越来越受欢迎

一种可灰度的接口迁移方案

在快速迭代的互联网背景下,系统为了实现快速上线,常常会选择最快的开发模式,例如我们常见的mvp版本迭代。大部分的业务系统对于未来业务的发展是不确定的,因此随着时间的推移,往往会遇到各种各样的瓶颈,例如系统性能、无法适配业务逻辑等问题,这时可能就涉及到系统架构的升级。系统升级往往包含最基础的两个部分:接口迁移重构和数据迁移重构,在系统架构升级的过程中,最重要的是需要保证系统稳定性,即用户不感知。因此文本的目的是提供一种可灰度、回滚的设计思路,实现稳定的架构升级。场景在我们系统迭代过程中,往往涉及到重构、数据源切换、接口迁移等场景,为了保障系统平稳上线,因此在接口迁移过程中应该保证可回滚、可灰度。

通过扩展logback日志来发送异常信息邮件

系统异常了,​​上篇​​是通过在全局异常中通过调用发送邮件的处理器代码进行邮件的发送,总是觉得还不那么优雅。这篇是通过扩展logback的日志插件来处理err级别的日志异常信息来发送邮件的。通过这篇的学习,可以掌握如何扩展logback的日志类,来实现自己不可告人的目的。下面直接上代码。首先自定义一个日志处理处理类  wlcLogLogbackAppender。importch.qos.logback.classic.spi.LoggingEvent;importch.qos.logback.classic.spi.ThrowableProxy;importch.qos.logback.cor

系统异常了,发个邮件能解决吗?

描述在我们的项目中,总是有一些我们不可控制的异常,比如数据库连接不上,redis挂掉,以及一些代码上未可知的异常爆发,不能在项目上线时就可以统计出来,并且修复,所以当我们这些bug抛出异常时,或者在某些可控的严重异常需要推送邮件或者短信或者其他的通讯工具比如钉钉或者飞书等,我们就需要这样的功能,这里提供一个邮件通知方法,当有未知异常或者被定义为严重异常的,就会给运维人员发送一个邮件进行通知,方便计时应对和问题定位。解决方案在springboot中的全局异常捕获处,对不可控异常拿到异常栈信息,进行异常msg的组装和通过freemarker模板进行渲染html文本,然后再把这个异常msg的html

使用 Prometheus Pushgateway 推送监控指标

我们知道Prometheus采用的pull模式,但是某些网络场景下面(比如不在一个子网或者防火墙),Prometheus无法直接拉取监控指标数据,这个时候我们可能就需要一种能够主动push的模式了。而 Pushgateway 就是Prometheus生态中来解决这个问题的一个工具。但是Pushgateway也不是万能的,其本身也存在一些弊端:将多个节点数据汇总到pushgateway,如果pushgateway挂了,受影响范围更大Prometheus拉取状态up只针对pushgateway,无法做到对每个目标有效由于Pushgateway可以持久化推送给它的所有监控数据,所以即使你的监控已经下

运维必备,Linux服务器抓包工具 tcpdump 示例详解

您是否正在尝试捕获数据包以分析网络上的流量?也许您是一名服务器管理员,遇到了问题并想要监控网络上传输的数据。无论情况如何,tcpdumpLinux实用程序都是您所需要的。在本文中,我们将详细讨论tcpdump命令,以及一些有关如何在Linux系统上安装和使用tcpdump的指南。什么是tcpdump命令?Tcpdump是一个强大的网络监控工具,它允许用户有效地过滤网络上的数据包和流量。您可以获得有关TCP/IP和网络上传输的数据包的详细信息。Tcpdump是一个命令行实用程序,这意味着您可以在没有显示的Linux服务器上运行它。系统管理员还可以将tcpdump实用程序与cron集成,以便自动执

同事多线程使用不当导致OOM,被我怒怼了

事故描述老规矩,我们先看下事故过程:某日,从6点32分开始少量用户访问app时会出现首页访问异常,到7点20分首页服务大规模不可用,7点36分问题解决。整体经过事故的整个经过如下:6:58,发现报警,同时发现群里反馈首页出现网络繁忙,考虑到前几日晚上门店列表服务上线发布过,所以考虑回滚代码紧急处理问题。7:07,开始先后联系XXX查看解决问题。7:36,代码回滚完,服务恢复正常。事故根本原因事故代码模拟如下:publicstaticvoidtest()throwsInterruptedException,ExecutionException{Executorexecutor=Executors

如何在 RHEL 9 上创建本地 Yum/DNF 仓库

你好,技术兄弟,最近红帽发布了最新的操作系统RHEL9,RHEL9满足了混合云的所有要求。它可以安装在物理服务器、虚拟机和容器镜像中。当我们没有订阅的时候,想安装软件包来做实验,那么设置本地的Yum或DNF仓库将是很方便的。在本指南中,我们将介绍如何在RHEL9上使用DVD或ISO文件一步一步地创建本地Yum/DNF资源库。创建本地Yum/DNF资源库的先决条件:最小化安装RHEL9系统具有管理权限的sudo用户RHEL9DVD或ISO文件1)挂载RHEL9ISO文件或DVD我们假设RHEL9iso文件已经被复制到系统中。运行下面的挂载命令,将ISO文件挂载到 ​​/opt/repo​​ 文件