面试官问:生产环境遇到难题,你是如何解决的?

news2024/9/23 21:22:20

1、生产环境发生 cpu 飙高的问题?你是如何定位解决的呢?

我们的线程是运行在 cpu 上面
1. CAS 自旋一直重试导致 cpu 飙高 没有控制自旋次数;乐观锁
2. 死循环;
3. 阿里云 Redis 被注入挖矿程序,建议 Redis 端口不要能够被外网访问;
4. 服务器被 DDOS 工具导致 cpu 飙高,可以通过限流、ip 黑名单、图形验证码防止机器模拟攻击;

创建过程中,需要配置线程名称呢?
阿里巴巴的 java 开发手册 使用到线程池建议配置线程池名称
方便在后期可以定位是那个业务相关的线程。
分析思路:
1. 查看当前的操作系统中(top) 那个进程 cpu 使用率是最高的;
2. 找到该操作系统中 最高使用率 进程 分析该进程里面具体线程 谁 cpu 使用率是最高的
3. 在根据线程名称 搜索“java 代码” 找到具体发生 cpu 飙高的代码

工具:
使用 D:\path\jdk\jdk8\jdk\bin jvisualvmq.exe/Arthas 工具

2、生产环境发生内存泄漏问题?你是如何解决的呢?

内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
内存泄漏发生的案例:
1. ThreadLocal 内存泄漏问题
2. HashMap 自定义 key 避免内存泄漏问题
通过以上案例排查内存泄漏问题
排查思路:查找到 java 虚拟机 哪些对象占用空间最大 前 20 个 列出分析
生产环境发生内存溢出问题?你是如何解决的呢?

3、生产环境遇到了报错?你是如何定位解决的呢?

1. 传统的方式 在生产环境中遇到报错问题,我们是通过搜索日志的方式,排查具体的错误。适合于服务器端 是单机或者少量集群的节点
Tail -200f
2.采用 aop 形式拦截系统错误日志,在将这些错误日志调用微信公众号接口 主动告诉给我们的开发人员生产环境发生了故障。
3. 我们公司采用 apm 系统 skywalking ,监控整个微服务 如果服务在一段时间内发生了故障或者报错 会主动调用微信模板接口通知给开发人员 生产环境发生了故障。在通过 skywalking 追踪 链可以直接查看到具体的错误信息内容

4、生产环境服务器宕机,如何解决呢?

1. 我们公司生产环境,会对我们服务器 实现多个节点集群,如果某台服务器发生了宕机 会自动实现故障转移,保证服务的高可用。

 

2. 如果服务器宕机 我们可以在服务器上安装 keepalived 监听 java 进程,如果该java 进程发生了宕机 会自动尝试重启该 java 进程,这是属于软件层面。如果是物理机器比如关机了,可以使用硬件方式自动重启服务器 例如向日葵
3.如果服务器发生了宕机,尝试重启 n 多次还是失败,我们可以使用容器快速动态的实现扩容(docker 或者 k8s)k8s
4.重启该服务,如果重启多次还是失败 则会发送短信模板的形式通知给运维人员。
注意:千万不要回答 直接重启服务器端。

物理机器关机----tomcat 服务器宕机

5、调用接口的时候,如果服务器端一直没有及时响应 怎么解决?

Ddd 服务网格 云原生
1.如果调用接口发生了响应延迟:是因为我们 http 请求是采用同步的形式,基于请求与响应模型如果服务器端没有及时响应给客户端,客户端就会认为接口超时,接口发生了超时客户端会不断重试 ,重试的过程中 会导致 幂等性问题幂等性问题(需要保证业务唯一性。)
例如:服务器端 调用网络连接(调用征信接口、发送短信、连接 mysql、redis)
2.如果接口响应非常慢,就需要对代码做优化例如 加上缓存减轻 db 查询压力、减少 GC 回收频率
3.如果接口代码在怎么优化 就是执行非常耗时时间,因为采用 mq 异步的形式不能够使用 同步形式。
举例子:接口代码里面 需要调用非常多接口 在响应客户端
接口代码:
1.调用征信报告接口---15s-30s

 

6、服务正在发布中?如何不影响用户使用?

服务正在发布中,该 jar 中正在启动... 客户端访问的时候,一直阻塞等待。
1.使用 nginx 故障转移即可。
2.灰度发布 先发布一小部分 如果没有问题 在让所有用户都可以访问。灰度发布 nginx+nacos gateway+nacos(推荐) 或者是 k8s 实现。

 7、你在开发过程中,遇到哪些难题?你是怎么解决的呢

如果在面试的过程中被面试官问到:你在开发过程中,遇到哪些难题?
不要答:空指针异常、常见错误异常。
遇到问题→你是如何分析的?→如何排查的?→最终是怎么解决的?
1.分布式事务
2.分布式幂等
例如 我们公司提供了一个接口,被其他公司进行调用。他的公司在调用我们公司接口的过程中,我们的接口响应超时了,最终触发了客户端重试了,重试的过程当中请求的参数都是相同的,导致我们接口会重复执行业务逻辑。
解决办法: 全局 id 业务上防重复、 在 db 层面去重复 例如 创建唯一约束
3.定时任务调度
例如:我们项目在生产环境中做定时任务,如果集群的情况下 定时任务重复执行。 解决该问题
1.在打 jar 包的时候 加上一个开关 只让一个 jar 包执行定时任务
2.整合分布式任务调度平台 xxljob 最终分片执行 定时任务集群的执行
定时任务 1 【】跑批 1-10 万 定时任务 2 11-20 万
4.数据同步延迟问题
我们公司 使用 canal 解决 mysql 与 redis+kafka 数据同步问题发现就是在并发的情况下同步非常延迟,我们整合 kafka 分区模型根据每张表都有自己独立的 topic 主题,每个 topic 主题有自己独立分区 每个分区有自己独立消费者 ,解决消息顺序一致性问题。
6. 安全性问题
7. 生产环境发生 cpu 飙高、内存泄漏
8. 因为我们的项目前后端分离 跨域的问题
.......真实业务场景当中遇到难题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 介绍和环境准备

文章目录一、概述二、Python 应用领域1) Web应用开发2)自动化运维3)网路爬虫4)人工智能领域5)科学计算三、Python 环境准备1)Linux 平台安装 Python2)Window 平台安装 Python3)安装 …

Windows WSL 启用 Systemd(使用 snap 安装应用)

背景 如今,WSL 已经能够支持 systemd。我们看一下怎么在 WSL 启用 systemd 来使用 snap。 准备工作 确保 WSL 版本在 0.67.6 及以上。可以通过如下命令查看。 wsl --version如果版本过低,可以下载最新版本的 WSL 并安装。 启用 Systemd 测试环境为…

SAP入门技术分享七:Field Symbol和数据引用

Field Symbol和数据引用1.概要2.定义Field Symbol(1)定义-Generic TYPE(泛型)(2)定义-Fully TYPE(全类型)3.分配Field Symbol(1)Assign语句的基本结构(2)将结构体字段分配到字段符号…

分布式链路追踪在数字化金融场景的最佳实践

作者 | 张冀 责编 | Carol 出品 | CSDN(ID:CSDNnews) 【CSDN 编者按】在以微服务和容器化为主导应用的现代化浪潮下,系统的可观测性变得越来越重要,而链路追踪技术就成为软件系统实现“无人驾驶”的关键手段。本文作者…

基于Java+SpringBoot+Vue前后端分离小区管理系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…

Linux——什么是互斥与互斥锁

目录 一.前提:临界区 & 临界资源 二.什么是互斥 (一).互斥概念 (二).为什么需要互斥 三.互斥锁介绍 (一).互斥锁的概念 (二).互斥锁的使用 ①系统API接口 ②…

内网服务器结合vxlan和iptables-snat实现内网服务器公网访问——筑梦之路

之前通过其他方式实现 CentOS搭建NAT和DHCP服务,实现共享上网_筑梦之路的博客-CSDN博客_vsphere 创建dhcp CentOS 7 firewalld实现共享上网和搭建本地yum仓库——筑梦之路_筑梦之路的博客-CSDN博客 如上图,有这样一种场景,我们经常遇到&am…

推荐和搜索系统的多样性研究综述

前言 检索结果的多样化是检索系统的一个重要研究课题,其可以满足用户的各种兴趣和供应商的平等公平曝光。 然而,检索系统中(搜索与推荐领域)的多样性研究缺乏一个系统的汇总,并且研究点相对零散。本次介绍的paper中&am…

深度学习可视化工具:Netron

Netron是一个用于神经网络、深度学习和机器学习模型的可视化工具。 Netron支持 ONNX、TensorFlow Lite、Caffe、Keras、Darknet、PaddlePaddle、ncnn、MNN、Core ML、RKNN、MXNet、MindSpore Lite、TNN、Barracuda、Tengine、CNTK、TensorFlow.js、Caffe2 和 UFF。 它还实验性…

[PyTorch]在PyTorch环境下使用Tensorboard

一、配置环境 在控制台中使用pip install语句安装Tensorboard(同时需要安装tensorflow) pip install tensorflow pip install tensorboard 添加引用并为其设置路径 from torch.utils.tensorboard import SummaryWriterwriter SummaryWriter(log_dir 日…

3轴数字罗盘IC HMC5883L介绍

3轴数字罗盘IC HMC5883L简介霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域。HMC5883L 包括最先进的高分辨率HMC118X 系列磁阻传感器,并附带霍尼韦尔专利的集成电路包括放大器…

Rstudio连接不上R语言常用解决方案

Rstudio链接不上R语言,默认情况下是不应该发生的,既然发生了,肯定是有些条件没有满足,如果将下面几个条件都满足,应该可以解决这个问题。 1. R和Rstudio安装路径为中文 虽然R和Rstudio支持中文,但是如果安…

干货 | 金融大数据风控利用个人信息的边界

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:大数据风控技术及应用现状在人民币贷款持续增长,市场环境日趋复杂的情况下,利用大数据进行风控是社会主义市场经济进行金融资源合理配置不可或缺的手…

jmeter做接口和自动化常见的使用方法

目录一、提取器1.JSON 提取器的应用场景1.1.提取某个特定值1.1.1.切片提取获取某个位标值1.2.提取多个值1.3.按条件查询按1.3.1.件提取是一个常用的方法1.3.2.还有其余几种用法1.4.提取值组成的列表2. 正则 提取器的应用场景二、CSV 参数化三、beanShell 脚本1.beanShell 引用变…

基于python inference 、ResNet实现的图像分类 (附完整代码可作为毕设参考)

这篇文章主要介绍了 图像分类的 inference,其中会着重介绍 ResNet。 2.模型概览 在torchvision.model中,有很多封装好的模型。 可以分类 3 类:

typecho去掉index.php

typecho去掉index.php一、前言二、配置过程三、问题所在四、解决方案五、一点体会一、前言 大家好,我是尝试中成长的站长,最近在使用typecho的过程中遇到了这种问题,index.php的伪静态没办法去掉,遂浏览器搜索了很多教程&#xf…

Jetpack架构组件库:WorkManager

WorkManager WorkManager 是Android最新一代的后台调度 API,主要是用来替换先前的旧版后台调度 API(如 JobScheduler 等)。 WorkManager 是适合用于持久性工作的推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,…

无线局域网接入

非法接人是指非授权终端与无线局域网中的接入点(Access Point,AP)之间建立关联的过程,非法接入使得非授权终端可以与无线局域网中的授权终端交换数据,并可以通过AP访问网络资源。 非法登录是指非授权用户远程登录网络…

【JavaEE初阶】第八节.多线程(基础篇)阻塞队列(案例二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、阻塞队列概论 1.1 阻塞队列的概念与作用 1.2 阻塞队列的应用场景 —— 生产者消费者模型 1.3 生产者消费者模型的好处 二、阻塞队列的实现 2.1 Java标准库里面…

java中常见API该如何使用?

目录 API(Application Programming Interface)概述 如何使用API? API(Application Programming Interface)概述 –应用程序编程接口 –编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令&#xff0c…