背景
目前在弄的一个项目是一个由spring cloud搭建的微服务项目。项目仍然处于开发阶段,但是在做单元测试的时候就发现了一些接口响应速度比较。由于项目数据就是开发时的测试数据,量是非常小的,只能证明我们代码写的是非常烂的。整体的业务设计也是非常有问题的,
下面介绍几个优化的点
问题一,线程池
在我做压力测试的时候发现并发量一到某个较低的值的时候,好像是8。程序就无法运行了。 最终定位到的原因是线程池数量过低。 修改线程池之后就可以正常运行了。
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://*******?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: 1111
password: 11111
# Druid StatViewServlet配置
druid:
stat-view-servlet:
# 默认true 内置监控页面首页/druid/index.html
enabled: true
url-pattern: /druid/*
# 允许清空统计数据
reset-enable: true
login-username: zhfw
login-password: zhfw
# IP白名单 多个逗号分隔
allow:
# IP黑名单
deny:
filter:
stat:
# 显示慢sql 默认当超过3秒显示
log-slow-sql: true
slow-sql-millis: 100
max-active: 200
initial-size: 20
min-idle: 20
max-wait: 6000
问题二, 代码效率低。
代码中有大量的For循环去执行sql语句。这种是比较耗时间的。
问题三, tomcat最大连接数配置过低。
问题四, 请求头过大。
造成服务器崩溃
问题五: 一个接口中有大量的feign调用。
这个就只能通过 将一些基本数据如字典表,用户信息,缓存到redis中。 减少feign调用。