问题(Q1) 问题由来:博客已经部署在某云的服务器,数据库是单独购买的,和服务器不在一起。 部署成功后,有时会出现无法访问博客的情况,出现这样的错误界面。 [图片] [图片] 后台查看日志,报错信息如下: [图片] [图片] 根据错误日志的提示,是由于 HikariCp 数据库连接池无法创建数据库连接(创建超时)导致的 ..

关于博客每隔一段时间数据库无法访问的问题?

🙏 问题(Q1)

😱 问题由来:博客已经部署在某云的服务器,数据库是单独购买的,和服务器不在一起。
部署成功后,有时会出现无法访问博客的情况,出现这样的错误界面。

errorPage

errorCosole

后台查看日志,报错信息如下:

error_code1.jpg

error_code2.jpg

根据错误日志的提示,是由于 HikariCp 数据库连接池无法创建数据库连接(创建超时)导致的,错误提示说:Possibly consider using a shorter maxLifetime value

java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 2001ms.
	at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:689) ~[HikariCP-3.4.2.jar:?]

这个错误出现过很多次了,虽然重新刷新页面可以正常访问(点击跷跷板界面的 return to index ),但是这种规律性的错误(出现跷跷板的错误界面)让我感觉到有解决这个问题的必要!

有人遇到过这个问题吗?怎么解决?

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    1042 引用 • 7985 回帖 • 642 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    1508 引用 • 9952 回帖 • 573 关注
8 回帖
请输入回帖内容...
  • 88250

    看下数据库连接等待超时的值:

    show variables like 'wait_timeout';
    
    2 回复
  • lonuslan

  • 88250

    麻烦再看看全部超时的配置:

    show variables like '%timeout%';
    
    1 回复
  • lonuslan

    我是要把 connect_timeout 修改得长一点吗?

  • lonuslan

  • 88250

    按照 Hikari 的文档来看,maxLifetime 只要短于 wait_timeout 就行了,Solo 中用的是默认值 30 分钟(1800s),所以我觉得不应该报错才对。有可能是其他原因,要不再观察看看,你可以帮忙分析下,谢谢。

    1 回复
  • lonuslan

    20202101743logs.7z

    这是重新部署后第一次出现这个错误的日志,大佬有时间可以看下。

    我比较新(菜是原罪),也可能是其他的原因,我再观察观察。

    谢谢!

    1 回复
  • 88250

    日志中看不出问题了,再观察一下吧。

请输入回帖内容 ...