"查看nacos日志发现,每过30分钟就会报错一次:2023-11-01 11:19:34,629 WARN HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@5ae4e842 (Communications link failureThe last packet successfully received from the server was 1,764,254 milliseconds ago. The last packet sent successfully to the server was 1,764,254 milliseconds ago.). Possibly consider using a shorter maxLifetime value.我也检查了数据库的超时时间,如下:
怎么解决?"
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的问题描述和知识库中的参考资料,以下是针对“Nacos日志中每30分钟报错一次:Communications link failure
”的解决方案:
从日志信息来看,错误的核心原因是数据库连接池(HikariPool)中的连接在长时间未使用后失效,导致Nacos无法与数据库正常通信。具体表现为: - 数据库连接超时时间(wait_timeout
或 interactive_timeout
)小于连接池中连接的最大生命周期(maxLifetime
)。 - 数据库服务器主动关闭了空闲连接,而连接池未及时检测到该状态。
数据库的超时时间通常由以下两个参数控制: - wait_timeout
:非交互式连接的超时时间。 - interactive_timeout
:交互式连接的超时时间。
操作步骤: 1. 登录MySQL数据库,执行以下SQL语句查看当前超时时间:
SHOW VARIABLES LIKE 'wait_timeout';
SHOW VARIABLES LIKE 'interactive_timeout';
SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;
注意:上述设置仅对当前会话有效,若需永久生效,请修改MySQL配置文件(
my.cnf
或my.ini
):
[mysqld]
wait_timeout = 28800
interactive_timeout = 28800
Nacos默认使用HikariCP作为数据库连接池,其关键参数包括: - maxLifetime
:连接池中连接的最大生命周期,默认为1800000毫秒(30分钟)。 - idleTimeout
:连接池中空闲连接的最大存活时间,默认为600000毫秒(10分钟)。 - connectionTestQuery
:用于验证连接是否有效的SQL语句。
操作步骤: 1. 打开Nacos的配置文件(如application.properties
或application.yml
),添加或修改以下参数:
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.connection-test-query=SELECT 1
说明:确保
maxLifetime
的值小于数据库的wait_timeout
,以避免连接被数据库提前关闭。
如果调整上述配置后问题仍未解决,可能是网络问题导致连接中断。请参考以下步骤排查: 1. 使用telnet
或ping
工具检查Nacos服务端与数据库之间的网络连通性。 2. 确保Nacos服务端与数据库处于同一VPC内,或者已正确配置公网白名单。
如果问题仍然存在,可能是Nacos服务端本身存在问题。请参考以下步骤: 1. 登录MSE注册中心控制台,检查Nacos实例的状态是否为“运行中”。 2. 如果发现有非正常节点,等待2~3分钟后重试。如果问题持续存在,建议提交工单处理。
maxLifetime
小于数据库的wait_timeout
,否则可能导致连接池中的连接被数据库提前关闭。通过以上步骤,您可以有效解决Nacos日志中每30分钟报错一次的问题。如果问题仍未解决,请提供更多详细信息以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。