在一次活动中,监控发现某个微服务中心服务的负载较高,数据库写入速度变慢,排查问题。
主要可从以下几个方面排查
日志级别有 DEBUG、INFO、WARING、ERROR,检查生产环境的日志级别,日志打印多,会不断往日志文件写数据,会拖慢服务器的性能。
可登录服务器,如使用 top 命令,查看服务器的load负载情况
可查看某几条请求,错误情况,是否是调用的某个服务挂了,超时情况
业务应用可能操作数据库,查看缓存是否生效,是否存在频繁的查询,低频操作的数据库索引是否生效,在Navicat或控制台,使用explain命令,查看执行的SQL是否走索引。
在业务代码中发现使用的是 SimpleDateFormat 格式化日期,其为线程不安全,在高并发下可能有问题,可替换成线程安全的 JodaTime。
原格式化
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')