线上问题排查方案

在一次活动中,监控发现某个微服务中心服务的负载较高,数据库写入速度变慢,排查问题。
主要可从以下几个方面排查

1、生产日志级别

日志级别有 DEBUG、INFO、WARING、ERROR,检查生产环境的日志级别,日志打印多,会不断往日志文件写数据,会拖慢服务器的性能。

2、服务器负载

可登录服务器,如使用 top 命令,查看服务器的load负载情况
free -m 命令,查看服务器内存使用情况

3、查看服务调用链路

可查看某几条请求,错误情况,是否是调用的某个服务挂了,超时情况

4、查看数据库写入速度

业务应用可能操作数据库,查看缓存是否生效,是否存在频繁的查询,低频操作的数据库索引是否生效,在Navicat或控制台,使用explain命令,查看执行的SQL是否走索引。

5、检查应用中是否存在多次创建对象

在业务代码中发现使用的是 SimpleDateFormat 格式化日期,其为线程不安全,在高并发下可能有问题,可替换成线程安全JodaTimeDateTimeFormatter
原格式化

1)JodaTime 格式化方式

第一步、引入依赖
即在pom文件中添加依赖。

<dependency>
	<groupId>joda-time</groupId>
	<artifactId>joda-time</artifactId>
	<version>2.10.5</version>
</dependency>

第二步、代码中格式化

// String转Date
DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern('yyyy-MM-dd');
DateTime dateTime = dateTimeFormatter.parseDateTime(timeStr);
Date date = dateTime.toDate();
// Date 转String
DateTime dateTime = new DateTime(date);
String dateStr = dateTime.toString('yyyy-MM-dd')

2)DateTimeFormatter 格式化方式
import java.time.format.DateTimeFormatter;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDateTime locatTime = LocalDateTime.now();
String timeStr = formatter.format(locatTime)

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值