正在尝试升级Springboot
from 1.x/java8 to 2.3.x/java 11(AWS Corretto 11)
MySQL: Aurora
Connectionpool: tomcat datasource
Issue: with the upgraded version DB CPU go very high and DB connections in 800-1000 where as 1.x with same connection pool was 200-300 connections and CPU in 40s
This is detected in performance test.
该行是为升级的2.3添加的。x
"spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource"
## DB connection pool
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.max-wait=30000
spring.datasource.tomcat.max-active=150
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.max-idle=150
spring.datasource.tomcat.initialize-size=10
spring.datasource.tomcat.min-idle=10
spring.datasource.tomcat.validation-query=SELECT 1
spring.datasource.tomcat.validation-query-timeout=5
spring.datasource.tomcat.time-between-eviction-runs-millis=5000
spring.datasource.tomcat.min-evictable-idle-time-millis=30000
spring.datasource.tomcat.remove-abandoned=true
spring.datasource.tomcat.remove-abandoned-timeout=60
spring.datasource.tomcat.default-auto-commit=true
专家有什么建议来匹配数据库CPU和与以前版本的连接?
springboot 1.x:
CPU:40-50%
Connections : 200-300
springboot 2.3.x:
CPU:100%
Connections : 800-1000
DB进程列表也有几个“清理”状态。
gradle依存关系
implementation("org.springframework.boot:spring-boot-starter-data-jpa"){
exclude group: 'org.elasticsearch.client', module: 'elasticsearch-rest-client'
exclude group: 'com.zaxxer', module: 'HikariCP'
}
implementation('org.springframework.boot:spring-boot-starter-jdbc') {
exclude group: 'com.zaxxer', module: 'HikariCP'
}
implementation('org.apache.tomcat:tomcat-jdbc')
implementation("org.springframework.boot:spring-boot-starter-data-rest")
日志上说它的采摘tomcat.datasource
组织。阿帕奇。公猫jdbc。水塘DataSource@35ee466f{连接池[defaultAutoCommit=true;defaultReadOnly=null;defaultTransactionIsolation=-1;defaultCatalog=null;driverClassName=org.mariadb.jdbc.Driver;maxActive=150;maxIdle=150;minIdle=10;initialSize=10;maxWait=30000;testOnBorrow=true;testOnReturn=false;TimebetweenvictionRunsMillis=5000;NumTestsPerviectionRun=0;MinevictableTimeMillis=30000;testWhileIdle=false;testOnConnect=false;密码=********; url=jdbc:mysql:aurora://DB/schema?connectTimeout=2000; 用户名=根;validationQuery=选择1;validationQueryTimeout=5;validatorClassName=null;validationInterval=3000;AccessToUnderlyingConnectionLowed=true;removeAbandoned=true;removeAbandonedTimeout=60;LOG放弃=false;connectionProperties=null;initSQL=null;jdbcInterceptors=null;jmxEnabled=true;fairQueue=true;useEquals=true;当百分比为0时放弃;最大年龄=0;useLock=false;数据源=null;数据源jndi=null;suspectTimeout=0;alternateUsernameAllowed=false;commitOnReturn=false;回滚返回=false;useDisposableConnectionFacade=true;logValidationErrors=false;传播中断状态=false;ignoreexceptionnonpreload=false;useStatementFacade=true;}
查询日志速度慢-删除服务器/敏感详细信息[1]后:https://i.stack.imgur.com/X5jbh.jpg
来自评论:
CREATE TABLE history (
capi_id varchar(60) NOT NULL,
major_revision bigint(20) NOT NULL,
minor_revision bigint(20) NOT NULL,
version varchar(20) NOT NULL,
document_id varchar(60) DEFAULT NULL,
operation varchar(10) DEFAULT NULL,
status varchar(10) DEFAULT NULL,
transaction_id varchar(60) DEFAULT NULL,
PRIMARY KEY (capi_id,major_revision,minor_revision,version)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
解决方案:DB连接池问题通过切换到hikari连接池来解决,hikari连接池是springboot 2的默认设置。x、 应用程序负载测试中存在高延迟和504网关超时(或nginx 499),这可以通过减少db来解决
对于此查询(来自评论):
select history0_.capi_id as capi_id1_9_0_,
history0_.major_revision as major_re2_9_0_,
history0_.minor_revision as minor_re3_9_0_,
history0_.version as version4_9_0_,
history0_.document_id as document5_9_0_,
history0_.operation as operatio6_9_0_,
history0_.status as status7_9_0_,
history0_.transaction_id as transact8_9_0_
from history history0_
where history0_.capi_id='ID'
and history0_.major_revision=1485757299000
and history0_.minor_revision=0
and history0_.version='publish'
历史可能受益于
INDEX(capi_id, major_revision, minor_revision, version)
(索引列的顺序对于此查询并不重要。)
请提供“显示创建表历史记录”。
对于那些插入时间为2-4秒的插入来说,这似乎很不寻常。也许其中一些是插入。。。选择 我看不到完整的查询?
WARNING 本升级指南仅适用于 2.2 版本升级至 2.3 版本,如果你并非 2.2 版本,请查看其他升级指南,Plus 程序不允许跨版本升级! 更新代码 预计耗时: 2 小时 这是你自我操作的步骤,确认将你的 2.2 版本代码升级到 2.3 版本,如果你做过一些自定义修改可能会出现代码冲突,你需要解决。 升级依赖 预计耗时: 3 分钟 进入 Plus 程序目录,执行: composer up
我正在尝试将springboot应用程序从1.5.x迁移到2.3.x。已经走了很长一段路。我知道现在对于健康检查,endpoint是/acture/health而不是旧版本中的/health。 在openshift上,配置在执行就绪探测时仍然引用/healthendpoint。我想知道怎样才能仍然使用/healthendpoint而不是/acturet/health。SpringBoot2是否有任
老版本的Flask-SocketIO有完全不同的一系列依赖包。老版本依赖gevent-socketio和gevent-websocket,这些包 1.0 版本都不需要了。 尽管依赖的改变,但是 1.0 版本却没有太多重要的改变。下面是一个实际改变的详细的清单: * 1.0 版本放弃支持Python 2.6,增加了对Python 3.3, Python 3.4 和 pypy 的支持。 * 0.x 版
类名修改 StrUtils -> StrUtil FileUtils -> FileUtil ClassKits -> ClassUtil EncryptCookieUtils -> CookieUtil RequestUtils -> RequestUtil ArrayUtils -> ArrayUtil JbootHttpKit -> HttpUtil @JBootRPCService ->
Symfony 2.7于2015年4月30日发布,是继2.3版本之后的当前LTS(长期支持)版本。Symfony 2.3的这些版本的维护将于2016年5月结束,Symfony 2.7的维护将于2018年5月结束。两个版本的安全补丁将在维护结束后的一年内发布。 正如Massimiliano Arione在公告评论中所建议的那样,从Symfony 2.3升级到2.7需要做哪些更改,而无需检查所有次要升
如果您打算升级一个早先版本的 Jekyll,那么一些发生在 1.0 及 2.0 版本中的相关变化,您需要首先了解下。 在我们开始动手之前,请先获取最新版本的 Jekyll: $ gem update jekyll 立即开始 想快速构建并运行一个全新的 Jekyll 站点吗?那么只要执行 jekyll new SITENAME 即可!该命令会创建一个包含了 Jekyll 最基础框架的文件夹。 Jek