公司wiki突然崩了网页打不开,直接炸裂,页面显示报错信息与数据库有关:
Non Clustered Confluence: Database is being updated by another Confluence instance.
Please see http://confluence.atlassian.com/x/mwiyCg for more details.
打开链接一看,直接登数据库和wiki服务器测试连接,发现库表是正常的,不过数据库confluence和jira的几个慢查询导致发生了主从切换,然后wiki就起不来了,重启机器、服务也没用,查看报警日志,发现和 Synchrony 组件服务有关,报错信息如下:
进程和8090端口都在,数据库也能正常访问,但是就是打不开,查到官网bug中有类似的报错,踩到BUG了,运气真好!然后按建议方法修复,https://jira.atlassian.com/browse/CONFSERVER-58217
Option 1
Until the bug is fixed, a temporary workaround is to switch Synchrony into "Limited" mode.
Follow the steps below to perform the workaround (if Confluence is unresponsive, perform a restart before proceeding).
The Administering Collaborative Editing article describes how to change Synchrony's operating modes
Go to > General Configuration > Collaborative editing.
Choose Change mode.
Select "Limited" and choose Change.
Synchrony can also be changed to "Off" mode, but any shared drafts will become unavailable while in "Off" mode.
See How Do Drafts Work on Confluence for more information
Option 2
If you want to keep CE enabled, point your Load Balancer or Reverse Proxy directly to Synchrony and avoid using the internal proxy. More details here.
第一种方法,change Synchrony's operating modes不可行了,web控制台都打不开。然后去数据库表删状态为draft的记录(记得先备份),这个很坑,删的时候有外键约束,就算手动把外键都干掉,服务还是不能正常起来。
第二种方法可行性也不太高,换代理,由于部署的是单点模式,看着也不太可行。
然后想着既然是数据库主从切换后才导致的服务崩溃无法正常启动,那应该可能是库表里已经有脏数据了,把数据库回滚到崩溃前几分钟是不是就行了,由于数据库将近大几十个G,回滚搞了一个多小时,同时准备B方案,打算部署新的wiki连数据库试试(最后卡在license)。
等数据库回滚后,怀着忐忑的心情重启机器服务,发现还是起不来,真是刺激,使用 start-confluence.sh -fg 让服务前台启动,看报错日志还是跟之前一样,这就尴尬了。
最后突然想到这莫不是缓存在搞鬼,然后把缓存目录里文件都清了,重启后,页面转着转着终于打开了,逃过一劫,阿门!
Clear the plugin cache by removing the following directories:
<confluence-home>/bundled-plugins
<confluence-home>/plugins-cache
<confluence-home>/plugins-osgi-cache
<confluence-home>/plugins-temp
<confluence-home>/bundled-plugins_language
This will remove the plugin cache files only and will not permanently remove any plugins. These directories will be recreated during the next Confluence startup. However, some third-party plugins may store metadata in these directories, so we recommend creating a temporary backup of the directories.
最后就是丢了10分钟数据,在此期间编辑的wiki重新打开时无法粘贴图片(个别人反馈)。排查后发现有些目录属主变了,改变上级目录confluence下所有文件的属主解决:chown -R confluence:confluence confluence
然后看到同一天,语雀宕了七个小时没法使用,真是惊出一声冷汗。。。职业生涯中还有一次故障印象更深刻,那次是分布式存储系统雪崩,将近12个小时才完全恢复,直接修了个通宵,那时还不管数据库存储这些,但也是负责业务线的核心系统,跟着躺枪。活动前和负责此系统的研发一起提出了优化保障方案但是由于成本原因被否了,领导是从成本考虑问题,但是忽略了风险,存在侥幸心理甚至盲目自信,真正对系统最了解最熟悉的还是在一线的直接负责人啊,因小失大,想想还是有点可惜。这次还好没出事。
参考: