照例,我会把这个问题展开讲讲,这几乎像是一个关于 3 到 5 个故障点的有趣故事。
在午夜时分调查了 4 个小时之后,这其实没那么有趣。其中一些内容在技术上可能是不准确的,但带着这些可能的错误读起来会更有意思。
基本事实(抱歉,需要解释一下):我的 SSO 重定向到了我的家庭服务器(几年前 Gandi 没能解决一些问题,我转投了 Dynadot)。另外,在 Hostpapa 收购了非常可靠的 LFC 托管服务后,重定向到那里也更好用,因为你无法确定他们是否会悄悄升级某些东西,从而导致你的整个基础设施崩溃。
现在来说说这 3 个故障点(或者我甚至可以把这算作一个 5 点故障,那将是一个新纪录)
1*) Opera 今天又更新了,显然添加了一些代码,这些代码非常(不)喜欢 301/302 重定向,并对它们进行了硬缓存(Chromium 相关的东西)。
2*) Dynadot 今晚显然有 30 多秒的延迟(这正是触发 Chromium 问题所需的条件,而这个问题现在被缓存了,糟糕)。
3*) Discourse 崩溃了(就是上面提到的那个 oops),因为它无法在 30 秒内访问 SSO。应用不得不重新启动,但我实际上不确定 Discourse 是否在我重新启动之前一直处于宕机状态(我当时处于恐慌模式
)。不过,Gemini 根据日志让我在 sso/rails/redis 等方面打转。这发生在我尝试升级之后,但为了保持连贯性,我把它归在这个点下。
4*) 由于我无法弄清楚哪里出了问题,我重启了 Linux 以防万一,并开始升级 Discourse。由于 GitHub 的问题,升级失败了。是的,和往常一样,我不得不先清理一点磁盘空间,但我从未达到 0G,那本也可以是导致 Redis 问题的一个原因。是的,第二,既然现在看起来稳定了,我会在云端增加 10G,也许还有 Arkshine 升级。
5*) 有点像第一个问题,但在试图解决所有这一切时,我不断强制刷新页面,看看是否有什么地方被修复了。我猜我一直都在命中初始故障时的缓存重定向,这意味着我甚至无法看到问题是否已经修复,即使在第一次重新启动之后。
- 我可以正常访问我的 SSO。
- 另一个不使用 SSO 的域名网站也运行良好。
- 禁用 Discourse 的 SSO 后,论坛显示出来了,但我从未让普通登录正常工作过,所以这没什么帮助。但至少我现在知道确实是 SSO 搞乱了事情。
- Gemini 建议我在私密窗口中测试,所以我实际上启动了 Firefox,结果,论坛运行得很好。太好了,除了……什么?
- Opera 仍然失败。是的,我怀疑它仍在缓存重定向,但这不是我当时知道的事情。我还没有清除站点 Cookie、缓存等。
- 既然事情能正常工作,我用 Firefox 做了我原本打算做的必要工作,花了半个小时。
- 重启了 Opera,嘿,论坛显示出来了。我可能更早重启过 Opera,记不清了,但也许缓存现在超时了,并进行了正确的刷新。
有趣的是,今天早上我醒来时,Opera 又进行了一次升级。也许这个硬缓存升级在其他地方也造成了很多问题
。
补充说明:第 3 点当然是对我们来说最有趣的部分。也许还可以从日志中找到它(如果需要,我可以深入挖掘)。如果 Discourse 崩溃了,它会尝试使用某种定时器重新启动吗?还是说整个网站在我登录并重新启动应用之前都处于宕机状态?