今天带来一个真实案例,虽然不是什么故障,但是希望对大家有所帮助。

一、问题现象:

生产环境部署springcloud应用,服务部署之后,有时候需要10几分钟才能启动成功,在开发测试环境则没有这个问题。最开始是所有微服务都有这种情况,随着项目周期的进行,zwfw微服务的问题最为突出,每次部署后,需要大概6分钟才能启动,在这6分钟期间,程序没有任何日志,控制台没有任何输出。每次部署都会触发服务不可用的报警。如下:

注:报警是连续2分钟不可用才开始发送。

二、问题分析过程

起初怀疑是公司使用的加解密工具Virbox Protector导致的,公司加密程序Virbox Protector毕竟对线上的java可执行程序和待发布的jar包都进行了修改,并且在程序启动前,java首先要对jar包进行解密,势必会造成程序的性能造成影响。但是加密组本着“其他组都没有反馈这个问题,就你们组有问题”的态度,直接将问题踢了回来,导致问题久久不能认真对待。

2021年9月9日研发人员反馈另外一个微服务,也出现了这种启动慢或者无法启动的问题,问题被再次提出。这次,我决定再重新观察一下这个问题,最起码要找出是加密工具惹祸的证据。

因为zwfw这个服务能稳定复现,所以就拿这个服务进行分析。

2.1 zwfw这个微服务

首先介绍一下zwfw这个服务的背景,这个服务部署在华为云主机上,不具备访问互联网的网络权限。

2.2 jstack工具介绍

如果你想知道,当前时间,java都在执行哪些任务,那么就可以使用jstack来观察。jstack,jmap,jstats都是java生态中非常重要的工具,并且是jvm自带的命令。使用jstack 进程号,就能列出这个java进程所有的线程,及线程正在执行的方法栈,默认是将线程栈打印在当前控制台。jstack还可以和操作系统命令top联合使用排查CPU占用高的问题。

2.3 排查过程

分析问题之前,首先将这个服务从nacos上面踢下来,防止在调试期间被前端机器调用(因为是直接在生产环境调试)。

然后将zwfw的进程kill掉,再手工使用命令启动服务。打出执行命令后,日志文件中的日志开始中断。

然后执行jstack 进程号,打印出来堆栈,结果真是出乎意料,其中主线程的方法栈如下:

比较奇怪,还真是阻塞在项目代码上面。这个问题,之前也有人遇到过,如:https://www.javacodegeeks.com/2015/03/inetaddressimpllookupallhostaddr-slowhangs.html

因为之前做项目,碰到过多次没有配置hostname导致的dns超时的问题(比如说hession调用),所以根据我的经验,这个只需要修改一下host文件就能解决。

所以就对本机的hostname增加ip的解析。因为怕应用依赖hostname对应的IP,所以hostname对应的ip,要配置成局域网的真实ip。修改host配置后,问题解决,zwfw启动缩短为正常的10秒以内。

三、解决方法

既然是因为解析hostname导致,那最快的解决方法就是增加hostname的解析。也不知道log4j2,为什么必须要这样做。

1、首先查看本机的hostname,输入hostname命令。

2、查看本机的ip和ipv6地址,使用ifconfig命令。

3、编辑/etc/hosts文件,增加hostname的解析,问题解决

四、问题回顾和总结

团队之间互相踢皮球不配合导致这个问题持续的时间比较长。我一开始一直认为是公司对java程序进行了修改导致的,导致没有尝试排查问题,所以,以后遇到问题,不要轻易怀疑很成熟的基础组件。

其实很多生产环境的故障,我们都可以避免。下面是我在互联网系统中总结的一些其他案例,如需自取

做支付遇到httpclient的大坑

记一次自动恢复的故障

生产环境部署springcloud微服务启动慢的问题排查相关推荐

  1. centos7.9使用jenkins部署springcloud微服务_配合SVN_脚本_实现自动部署后端以及前端程序_亲测成功---持续集成部署Jenkins工作笔记0023

    以前有个jekins教程,还比较详细,但是,那个是基于git和svn,并且需要配置jekins支持git,svn的插件. 配置以后就可以实现只要提交代码,就会自动触发部署,但那个时候安装jenkins ...

  2. Docker-compose 部署SpringCloud微服务步骤及遇到的问题

    部署环境 CenterOS 7 Docker version 1.13.1, build 7d71120/1.13.1 1. 安装docker-compose 参考视频 黑马程序员 第58节参考文件在 ...

  3. centos7 搭建本地git_本地服务调用K8S环境中的SpringCloud微服务实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总及配套源码,涉及Java.Docker.K8S.Devops等 下图是典型的微 ...

  4. 快速搭建 SpringCloud 微服务开发环境的脚手架

    快速搭建 SpringCloud 微服务开发环境的脚手架 本文作者:HelloGitHub-秦人 本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 ...

  5. docker的接口 外部如何访问k8s_本地服务调用K8S环境中的SpringCloud微服务实战

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:原创文章分类汇总及配套源码,涉及Java.Docker.K8S.Devops等 下图是典型的微 ...

  6. 关于华为私有云部署若依springcloud微服务项目改造及部署

    关于华为私有云部署若依springcloud微服务项目改造及部署 1.项目介绍 ​ 当前微服务项目主流的注册中心为阿里巴巴的nacos,但介于甲方要求使用华为的注册中心,所以在接下来讲解项目改造: 2 ...

  7. 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)

    目录 系列 更换成阿里云仓库 开通阿里云镜像服务 创建仓库 本地k8s切换成阿里云的镜像仓库 测试阿里云镜像 准备简单的微服务 eureka 应用配置 k8s配置: demo-a 应用配置 k8s配置 ...

  8. springcloud生产环境一般怎么部署_机器学习模型生产环境部署的四种系统架构总结...

    本文将从简单到复杂介绍典型架构的特点以及其优缺点. 介绍 一旦数据科学家对模型的性能感到满意,下一步便是"模型生产环境部署", 没有系统的合理配置,您的Kaggle Top1模型可 ...

  9. SpringCloud 微服务

    一微服务架构概述 1.1 微服务特性以及优点 每个服务可以独立运行在自己的进程里 一系列独立运行的微服务(goods,order,pay,user,search-)共同构建了整个系统 每个服务为独立的 ...

  10. SpringCloud 微服务(一)

    看完了黑马程序员的免费课程,感觉受益匪浅,写个笔记,记录一下 课程地址:https://www.bilibili.com/video/BV1LQ4y127n4?p=1 1.微服务框架,学习哪些内容 系 ...

最新文章

  1. IE10访问apache 2.4会奇慢的解决办法
  2. linux 单引号,双引号,反引号的小总结。
  3. android 蓝牙传输分包,彻底掌握Android多分包技术(一)
  4. SpringBoot—分层结构
  5. 遍历文件夹还原数据库SQL语句
  6. 三分钟看懂一致性哈希算法
  7. P1303 A*B Problem(python3实现)
  8. mysql统计各部门人数_2021各省份电网报名人数统计!会不会比考研还难?有些省份人数还就多的离谱了。。。...
  9. (035) Linux之其他命令
  10. 对于拼接进去的html原来绑定的jq事件失效
  11. 极客大学产品经理训练营 产品思维和产品意识 作业2
  12. hosts该文件已设置为只读的解决方法
  13. 卖油的都开始卖菜了,打败你的往往不是对手
  14. 记录Ok6410 sd 启动uboot
  15. ipa解包打包工具_解压ipa软件包找到urlscheme
  16. N-puzzle-Problem
  17. 1卡路里(kcal)=4.184千焦(kJ)
  18. 2021年美容师(初级)最新解析及美容师(初级)试题及解析
  19. 你真的会除甲醛吗?除甲醛才不是通风这么简单!
  20. SQL进行数据过滤的方法

热门文章

  1. UEditor自定义工具栏图标
  2. 基于Pandas的股票数据分析
  3. 《眼儿媚·愁云淡淡雨潇潇》
  4. HNU 11722 The Gougu Theorem
  5. 牛客 送分啦-QAQ
  6. windows server 2012显示桌面图标
  7. 【IE知识】最系统、完整的标准工时学习资料;标准作业(SOP)详解;生产线布局规划
  8. 4. AWS DynamoDB实战之Secondary Indexes
  9. 没有这个传奇工程师,就没有今天的Windows
  10. flowable子流程实现