在日常启动nacos-2.0.3的时候,经常会启动不成功,检查start.out可以看到no datasource set的异常,导致了nacos启动失败。

1.start.out文件中可以看到:

ERROR Startup errors : 

No DataSource set 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgum。。。。

ERROR Nacos failed to start, please see /opt/nacos-2.0.3/logs/nacos.log for more details.

2.根据start.out的提示去查看nacos.log,可以看到如下异常信息

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)

3.在该节点(192.168.88.130)上使用mysql命令远程连接mysql服务器(192.168.88.129),发现还真连接不上,说是mysql服务器接入的连接太多了

root@server-2:~# mysql -h 192.168.88.129 -u root -p
Enter password:
ERROR 1129 (HY000): Host '192.168.88.130' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

4.跑到mysql服务器(192.168.88.129)上去登录mysql,进行FLUSH HOSTS

mysql -h 192.168.88.129 -u root -p

mysql> FLUSH HOSTS;

5.在该节点(192.168.88.130)上重新使用mysql命令远程连接mysql服务器(192.168.88.129),发现还可以连接上了

root@server-2:~# mysql -h 192.168.88.129 -u root -p

mysql>

6.重新启动nacos,就可以启动成功了

INFO Nacos started successfully in cluster mode. use external storage

分析原因:

nacos在服务器重启,或者nacos被shutdown.sh之后,它作为客户端是把跟mysql数据库之间的连接断开了,但是这种断开是非正常流程的断开方式,它前面连接mysql服务器的连接状态还在myql服务器上登记着呢,mysql服务器还在等待它的下一步动作呢

nacos重启多了,不释放mysql的连接资源,就耗尽了mysql服务器的连接资源,导致一直登录不上。

感觉nacos的shutdown.sh并不安全,同时mysql的连接管理也不咋地,不主动释放长期不交互的死连接。

参考:服务器端mysql连接时:报错 1129 (HY000): Host '' is blocked because of many connection errors;_落叶无痕的博客-CSDN博客

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐