HikariPool-1 - Start completed后面不执行

本文讨论了在排查问题时可能遇到的情况,如application.yml配置错误以及在方法中同时使用@PostConstruct和@Scheduled注解导致的问题。作者强调了在对比正常运行和问题发生时的修改来定位问题的关键性。

排查
1.可能是application.yml里面的某个配置错了
2.@PostConstruct和@Scheduled不能用在同一个方法上
关键的一点在于找出能正常运行和不能正常运行期间都改了些啥

2025-03-16T21:40:19.136+08:00 WARN 25332 --- [demo1] [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' is not supported] 2025-03-16T21:40:33.536+08:00 INFO 25332 --- [demo1] [nio-8080-exec-4] c.e.demo.controller.DeptController : 要修改的id:4 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@613d0eef] was not registered for synchronization because synchronization is not active 2025-03-16T21:40:33.551+08:00 INFO 25332 --- [demo1] [nio-8080-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-03-16T21:40:33.869+08:00 INFO 25332 --- [demo1] [nio-8080-exec-4] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@527baea9 2025-03-16T21:40:33.871+08:00 INFO 25332 --- [demo1] [nio-8080-exec-4] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. JDBC Connection [HikariProxyConnection@1064111603 wrapping com.mysql.cj.jdbc.ConnectionImpl@527baea9] will not be managed by Spring ==> Preparing: update dept set name = ?, create_time = ?,update_time=? where id = ? Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@613d0eef] 2025-03-16T21:40:33.912+08:00 ERROR 25332 --- [demo1] [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.mybatis.spring.MyBatisSystemException: ### Error updating database. Cause: org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [id, dept, param1, param2] ### The error may exist in com/example/demo/mapper/DeptMapper.java (best guess) ### The error may involve com.example.demo.mapper.DeptMapper.update-Inline ### The error occurred while setting parameters ### SQL: update dept set name = ?, create_time = ?,update_time=? where id = ? ### Cause: org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [id, dept, param1, param2]] with root cause
03-17
<think>我们正在讨论HikariCP连接池的日志信息,特别是"Starting"和"Startcompleted"日志的含义。根据用户的问题,用户希望了解HikariCP初始化过程中这些日志信息的含义。首先,我们需要解释这些日志出现的背景和意义。HikariCP是一个高性能的JDBC连接池。当应用程序启动HikariCP连接池时,它会经历初始化阶段,包括配置验证、连接池创建和预填充等步骤。在初始化过程中,HikariCP会记录一些日志,其中就包括:-"HikariPool-Starting..."-"HikariPool-Startcompleted."这些日志是由HikariCP的内部日志记录器输出的,通常级别为INFO。具体含义:1."HikariPool-Starting...":这表示HikariCP开始启动连接池。在这个阶段,HikariCP会进行配置验证(例如检查必需的配置项,如jdbcUrl、用户名、密码等),然后尝试建立初始连接(根据设置的initializationFailTimeout和connectionTimeout等配置)。如果配置了连接池的预填充(如minimumIdle大于0),则会开始创建最小空闲连接。2."HikariPool-Startcompleted.":这表示连接池已经成功启动并准备好提供数据库连接。此时,连接池已经达到了最小空闲连接数(如果设置了),并且没有发生导致启动失败的异常。但是,需要注意的是,如果在启动过程中发生错误(例如数据库连接可用、认证失败等),则会出现“Startcompleted”日志,而是会记录错误信息并抛出异常。此外,启动时间可能会受到连接建立速度的影响,尤其是当需要建立多个连接(预填充)时,可能会在“Starting”和“Startcompleted”之间有一定的延迟。为了更清晰地说明,我们可以模拟一个典型的启动日志序列:```INFO:HikariPool-1-Starting...DEBUG:HikariPool-1-Addedconnectioncom.mysql.cj.jdbc.ConnectionImpl@1a2b3c4dDEBUG:HikariPool-1-Addedconnectioncom.mysql.cj.jdbc.ConnectionImpl@5d6e7f8a...INFO:HikariPool-1-Startcompleted.```注意:DEBUG级别的日志可能会默认输出,取决于日志配置。如果启动失败,可能会看到类似这样的日志:```INFO:HikariPool-1-Starting...ERROR:HikariPool-1-Exceptionduringpoolinitialization.com.mysql.cj.jdbc.exceptions.CommunicationsException:Communicationslinkfailure...```因此,看到“Startcompleted”日志意味着连接池已经成功初始化,应用程序可以正常使用数据库连接。另外,用户可能关心如何调整日志级别以查看更多细节。HikariCP使用SLF4J作为日志门面,因此可以通过配置应用程序的日志框架(如Logback、Log4j2等)来调整HikariCP的日志级别。例如,在Logback中,可以这样设置:```xml<loggername="com.zaxxer.hikari"level="DEBUG"/>```设置为DEBUG级别可以输出更详细的连接池操作信息,包括连接的添加、移除等。总结:-"Starting"日志:连接池开始启动。-"Startcompleted"日志:连接池启动成功,可以正常使用。如果用户遇到启动问题,应检查在“Starting”日志之后是否有错误日志,并根据错误信息进行排查。根据用户的问题,我们生成了以下相关问题:§§相关问题§§1.HikariCP启动失败的可能原因有哪些?2.如何配置HikariCP的连接池大小和预填充连接?3.如何调整HikariCP的日志级别以获取更详细的调试信息?4.HikariCP在启动过程中会进行哪些配置验证?5.HikariCP的初始化超时参数initializationFailTimeout有什么作用?</think>### HikariCP连接池启动日志解析 当HikariCP连接池初始化时,日志中出现的`Starting`和`Start completed`信息表示连接池生命周期的关键阶段: #### 1. `HikariPool - Starting...` - **含义**:连接池开始初始化过程 - **触发时机**:当应用程序首次请求数据库连接时 - **执行操作**: - 验证配置参数(如`jdbcUrl`, `username`, `password`等) - 加载JDBC驱动程序 - 初始化内部线程池和连接队列 - 创建初始连接(数量由`minimumIdle`参数控制) - **日志示例**: ``` INFO: HikariPool-1 - Starting... ``` #### 2. `HikariPool - Start completed.` - **含义**:连接池完成初始化并进入就绪状态 - **触发条件**: - 成功建立至少一个数据库连接 - 所有配置验证通过 - 后台维护线程已启动 - **时间间隔**:`Starting`到`Start completed`的间隔反映初始化耗时,受以下因素影响: - 数据库响应速度 - 网络延迟 - `connectionTimeout`配置值 - 初始连接数(`minimumIdle`) - **日志示例**: ``` INFO: HikariPool-1 - Start completed. ``` #### 典型启动日志序列 ```log 12:05:31.128 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Starting... 12:05:31.452 [main] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection conn1 12:05:31.689 [main] DEBUG com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Added connection conn2 12:05:31.732 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Start completed. ``` #### 故障排查提示 若未出现`Start completed`日志: 1. 检查数据库连接参数是否正确 2. 验证网络可达性和数据库状态 3. 查看`connectionTimeout`是否过短(默认30秒) 4. 检查是否有初始化异常堆栈 5. 确认JDBC驱动兼容性 > 连接池初始化耗时可通过日志时间差计算:$T_{\text{init}} = T_{\text{completed}} - T_{\text{starting}}$
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值