赞
踩
线程运行cpu(cpu使用率飙高)
public class Test05 {
public static void main(String[] args) {
new Thread(new Runnable() {
public void run() {
while(true){//死循环
System.out.println("111111");
}
}
}).start();
}
}
解决,加入休眠时间
CAS自旋一直重试导致cpu飙高 没有控制自旋次数;乐观锁
解决:控制循环次数
建议Redis端口不要能够被外网访问
可以通过限流、ip黑名单、图形验证码防止机器模拟攻击;
传统的方式 在生产环境中遇到报错问题,我们是通过搜索日志的方式,排查具体的错误。
适合于服务端是单机或者少量集群的节点 Tail -200f
采用aop形式拦截系统错误日志,在将这些错误日志调用微信公众号接口,主动告诉给我们的开发人员
生产环境发生了故障。
2. 如果服务器宕机 我们可以在服务器上安装 keepalived 监听 java 进程,如果该
java 进程发生了宕机 会自动尝试重启该 java 进程,这是属于软件层面。如果是
物理机器比如关机了,可以使用硬件方式自动重启服务器 例如向日葵
3.如果服务器发生了宕机,尝试重启 n 多次还是失败,我们可以使用容器快速动
态的实现扩容(docker 或者 k8s)k8s
4.重启该服务,如果重启多次还是失败 则会发送短信模板的形式通知给运维人
员。
注意:千万不要回答 直接重启服务器端。
物理机器关机----tomcat 服务器宕机
如果调用接口发生了响应延迟:是因为我们 http 请求是采用同步
的形式,基于
请求与响应模型如果服务器端没有及时响应给客户端,客户端就会认为接口超
时,接口发生了超时客户端会不断重试 ,重试的过程中 会导致 幂等性问题
幂等性问题(需要保证业务唯一性。)
例如:服务器端 调用网络连接(调用征信接口、发送短信、连接 mysql、redis)
如果接口响应非常慢,就需要对代码做优化例如 加上缓存减轻 db 查询压力
、减少GC回收频率
如果接口代码在怎么优化 就是执行非常耗时时间,因为采用 mq 异步的形式
不能够使用 同步形式。
举例子:接口代码里面 需要调用非常多接口 在响应客户端
接口代码:
1.调用征信报告接口—15s-30s
如果在面试的过程中被面试官问到:你在开发过程中,遇到哪些难题?
不要答:空指针异常、常见错误异常。
遇到问题→你是如何分析的?→如何排查的?→最终是怎么解决的?
1.分布式事务
2.分布式幂等
例如 我们公司提供了一个接口,被其他公司进行调用。他的公司在调用我们公司接口的过程中,
我们的接口响应超时了,最终触发了客户端重试了,重试的过程当中请求的参数都是相同的,
导致我们接口会重复执行业务逻辑。
解决办法: 全局 id 业务上防重复、 在 db 层面去重复 例如 创建唯一约束
3.定时任务调度
例如:我们项目在生产环境中做定时任务,如果集群的情况下 定时任务重复执行。 解决该问题
1.在打 jar 包的时候 加上一个开关 只让一个 jar 包执行定时任务
2.整合分布式任务调度平台 xxljob 最终分片执行 定时任务集群的执行
定时任务 1 【】跑批 1-10 万 定时任务 2 11-20 万
4.数据同步延迟问题
我们公司 使用 canal 解决 mysql 与 redis+kafka 数据同步问题
发现就是在并发的情况下同步非常延迟,我们整合 kafka 分区模型
根据每张表都有自己独立的 topic 主题,每个 topic 主题有自己独立
分区 每个分区有自己独立消费者 ,解决消息顺序一致性问题。
安全性问题
生产环境发生 cpu 飙高、内存泄漏
因为我们的项目前后端分离 跨域的问题
…真实业务场景当中遇到难题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。