首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

服务异常处理

背景 不加班的周末,整理了一下项目上的异常处理方案,和小伙伴们共享,里面不成熟的代码或解决方式.QAQ,评论区走起 自定义异常消息结构 public final class Code { private...String getString() { return "[" + this.code + "][" + this.msg + "]"; } } 关键字段解释 code:异常编码...此处可以拦截各种类型的异常,但是要注意拦截的顺序,按照基础Exception的顺序,越是后面的异常拦截要靠前, 我们将拦截到的异常消息封装,然后统一在api-gateway中解析处理. /** *...HTTP状态码 private static final int SERVER_INTERNAL_ERROR_HTTP_STATUS = 500; // 服务器内部异常 /**...HTTP状态码 private static final int CUSTOM_EXP_STATUS_CODE = 403; // 自定义异常(可控异常)对应的HTTP状态码 private

3.2K60

Linux异常信号——Signal

近期接触了Linux平台的测试,遇到了软件发生异常,从而接触到了 Linux平台下的Signal——信号,用来通知进程发生了异步事件。...作为测试,免不了需要初步判断一下是否是正在的异常,因此学习了一下Signal NO 1 信号事件的发生有两个来源: 硬件来源(比如我们按下了键盘或者其它硬件故障); 软件来源,最常用发送信号的系统函数是...NO 2 Linux支持的信号列表如下(很多信号是与机器的体系结构相关的) 信号值 默认处理动作 发出信号的原因 SIGHUP 1 A 终端挂起或者控制进程终止...E 信号不能被捕获 F 信号不能被忽略 了解了以上信息后,再来看软件生成异常的log文件,其他的信息可以暂时不关注,将log信息中的Signal字段找出来,解读后面的数值 未了解之前: 跟开发了解了软件在出现异常时会写...是经常出现且需要重点关注的信号,遇到这个数字千万要放过 6和14,遇到这个信号也千万不要忽略,需要找开发进行分析讨论的哟,它可能是问题,当然,也可能不是问题 其他的信号,目前位置没有遇到过 以上简单分享了Linux

4.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    线上服务负载异常排查

    前言 除了解决业务Bug之外,工作中通常我们还会面临两类问题: 线上服务负载异常,比如CPU负载异常飙高 线上服务内存持续增长,存在泄漏 一般我们会通过各种监控、报警系统,发现和定位问题,关于如何搭建服务监控可以参考之前的文章...《Go服务监控搭建入门》。...所以今天就来看看这种情况下,如何定位服务负载异常的原因。...首先关于「负载异常」的问题,大都肯定都知道使用top或者htop等命令定位到某个进程或线程,好,问题来了: 如何定位到是哪个具体的函数导致的服务负载异常呢?...介绍一个利器perf 本文使用docker来演示perf的用法,可以直接使用我编排好的docker compose工程(一个模拟http服务调用grpc服务的演示项目) https://github.com

    50520

    服务-如何捕获上游服务抛出异常?

    问题便在 订单服务 去调用 用户服务 时,如果 用户服务 查询失败(如用户状态被冻结,用户不允许等)并抛出了带有提示信息的异常,而在我们 订单服务 是无法获取到异常信息的,它会抛出 FeignC 自带的...FeignException异常,并不会携带用户服务本身抛出的异常,订单服务 会显示一个网络为500的请求失败异常 如:服务A 调用 服务B 服务B 在运行时 抛出一个异常: new RuntimeException...("User does not exist or has been frozen"); 而在 服务A 显示的异常信息为: ---- 可能会有人问:用户服务 如果不抛出异常,而是查询失败后直接返回一个null...,在 订单服务 调用完毕后,对其进行非空判断,然后在 订单服务 返回异常信息。...自定义异常类 这里的 服务端 指服务提供者,也叫 上游服务;客户端 指 服务使用者,也叫下游服务

    52660

    linux缺页异常处理--内核空间

    缺页异常被触发通常有两种情况—— 程序设计的不当导致访问了非法的地址 访问的地址是合法的,但是该地址还未分配物理页框. 下面解释一下第二种情况,这是虚拟内存管理的一个特性。...,程序在一定时间内所访问的内存往往是有限的,因此内核只会在进程确确实实需要访问物理内存时才会将相应的虚拟内存区域与物理内存进行关联(为相应的地址分配页表项,并将页表项映射到物理内存),也就是说这种缺页异常是正常的...,而第一种缺页异常是不正常的,内核要采取各种可行的手段将这种异常带来的破坏减到最小。...缺页异常的处理函数为do_page_fault(),该函数是和体系结构相关的一个函数,缺页异常的来源可分为两种,一种是内核空间(访问了线性地址空间的第4个GB),一种是用户空间(访问了线性地址空间的0~...3GB),以X86架构为例,先来看内核空间异常的处理。

    1.9K20

    SpringCloud gateway全局异常处理,以及后台的服务异常response的异常包装

    gateway自己服务的全局异常处理,参考这篇https://segmentfault.com/a/1190000016854364?...,如果出现了异常没有处理,网关也是会直接原文返回给客户端的。...譬如在gateway后面有一个服务出了异常,当客户端请求时: 如果我们通用的返回值,并不是这么定义的,譬如我都是用code=200,message=xxx之类的json。...而且我们无法保证网关后面的微服务都能捕获异常并返回统一的格式,所以,就需要在网关处做一层封装。对返回值、尤其是非正常的返回值做一个包装。 这一步的关键点就在于怎么获取服务的返回值。...通过这篇文章获取到返回值后,可以通过判断json字符串是否包含code:xxx的字样,来判断后台的服务是否异常了。然后通过修改返回值,加上我们通用的返回值字段即可。

    7.5K21

    服务异常重启MYSQL数据库异常处理

    问题分析解决 昨天突然服务器重启了,最后导致的就是Zabbix的数据库MYSQL库表坏了,然后MYSQL就启动不了了。...启动不了咋整,看log呗,报什么异常情况,查看error如下: 2017-09-21 14:41:18 4255 [Note] InnoDB: The InnoDB memory heap is disabled...Note] InnoDB: CPU does not support crc32 instructions 2017-09-21 14:41:18 4255 [Note] InnoDB: Using Linux...;从网上看到差不多的文章说需要设置如下: innodb_force_recovery = 6 innodb_purge_thread = 1 先不管什么意思了,先配置上看看能不能修复表了,配置之后果然服务也启动起来了...看起来基本没有问题了,那咱就先把Zabbix Server启动起来看看吧,然后用tail命令MYSQL的error日志中还会有什么异常情况。

    11.7K20

    NFS服务挂掉导致的Nginx异常

    检查Nginx服务器磁盘空间,空间正常。但是df -h 命令输出极慢 检查Nginx服务器负载状态,CPU负载出现异常升高的情况。...cpj.erp.qipeidao.com访问异常的报错,报错显示静态资源不存在 13.50左右操作过的唯一变更,即重启了172.26.139.224这台服务器。...这台服务器时,nfs服务并没有设置自启动,导致重启后nfs服务挂了。...在此问题中还有一个现象,即下午13.50分左右nginx其实已经出现问题,但是用户使用正常,是因为我们在阿里云做了全站加速,阿里云的域名解析的缓存会有一个小时的时间,所以用户在故障发生一个小时后才会反馈异常...解决以及优化方案 1.检查所有服务器的nfs服务器并配置自启动。

    1.3K21

    记录一次dns服务异常

    结果在打开浏览器之后,发现居然提示我找不到dns服务器地址。但是可以通过ip打开服务器的宝塔面板,这就让我一脸懵。...经过查找,发现是当前dns服务器地址有问题,或者不可用。 问题的解决 解决方法 找到了问题,那么怎么解决呢。要用到dns解析服务器地址,我四处查找找到了几个免费公共的DNS解析服务器。...服务商 dns1 dns2 阿里 223.5.5.5 223.6.6.6 百度 180.76.76.76 2400:da00::6666(ipv6) OpenDNS 208.67.222.222 208.67.220.220...114.114.114.114 114.114.115.115 Cloudflare 1.1.1.1 1.0.0.1 DNSPod 119.29.29.29 182.254.116.116 PS:如果配置了不合理的DNS服务器...在网卡设置页,右击点属性,然后双击internet协议版本4(TCP/IPv4),然后点击使用下面的DNS服务器地址,在下边的两个输入框中输入dns地址`,最后点击确定。

    2.2K20

    记录一次dns服务异常

    结果在打开浏览器之后,发现居然提示我找不到dns服务器地址。但是可以通过ip打开服务器的宝塔面板,这就让我一脸懵。...经过查找,发现是当前dns服务器地址有问题,或者不可用。[/card] 问题的解决 [card title="解决方法" color="info"]找到了问题,那么怎么解决呢。...要用到dns解析服务器地址,我四处查找找到了几个免费公共的DNS解析服务器。...[/card] 服务商 dns1 dns2 阿里 223.5.5.5 223.6.6.6 百度 180.76.76.76 2400:da00::6666(ipv6) OpenDNS 208.67.222.222...在网卡设置页,右击点属性,然后双击internet协议版本4(TCP/IPv4),然后点击使用下面的DNS服务器地址,在下边的两个输入框中输入dns地址`,最后点击确定。

    10710

    Java服务异常排查定位大图

    Java服务异常 系统资源问题定位 系统资源问题定位的核心是找到到底是哪个进程在异常占用系统资源,特别是在服务器中混部了多种服务的时候,经常会遇到系统资源竞用的情况。...因此需要确定异常进程的pid,然后再继续分析异常服务中到到底是哪个工作线程出现异常,如果并不是代码问题导致的,那么则需要考虑增加硬件配置来承载混部的各个服务。...接口响应慢问题定位 服务接口响应慢的问题大概是这三种异常场景中最复杂的,主要可以从两个层面进行分析,一个是服务自身存在问题导致接口响应慢,另一个是服务的依赖方出现响应慢导致。...因此分析排查定位过程也是主要从这两方面出发,服务自身问题主要包括代码Bug、系统资源异常使用等,依赖方主要包括依赖的中间件、下游服务接口等。...总结 本文主要梳理了日常研发工作中最常见的三种异常场景,分别是服务器资源使用异常、Java服务内存溢出异常以及接口响应超时异常

    56820

    解决apollo的configService服务启动异常

    接触过apollo和运行过apollo的人肯定都遇到过启动configService时抛异常了,而且100%会抛一个异常。...原因是,在apollo的架构中configService既作为config服务,同时也承载了metaService的功能,所以这个模块,既作为eureka的服务端也是eureka的客户端,这就造成了应用启动时...,eurekaServer未完全启动,eurekaClient拉取注册表信息时就抛异常了。...触发原因分析 首先看下异常的信息,异常的信息比较多,如下: 2020-12-23 09:55:19.882 ERROR 7022 --- [ main] c.n.d.s.t.d.RedirectingEurekaHttpClient...其次,最初的时候以为将fetchRegistry设置为false就ok了,然后在metaService服务获取configService时候啥也获取不到,才明白了fetchRegistry的真正意图。

    57520
    领券