freemo
(Jeffrey Phillips Freeman)
1
我有一个 Discourse 实例已经运行了一周,但出现了一些非常奇怪的故障现象,我暂时无法解决。部分原因是日志中没有任何有用的信息。
最明显的症状是:如果进入设置页面修改某个设置,然后点击绿色的对勾按钮,系统会接受更改,看起来一切正常。但随后刷新设置页面时,有很大概率会显示旧设置或新设置。如果继续刷新,有时显示一种设置,有时显示另一种。
更糟糕的是,问题不仅限于设置页面本身,有时服务器本身的功能表现也会发生变化。例如,尝试上传新标志时,有时显示旧标志,有时显示新标志。
回答一个显而易见的问题:我没有在负载均衡器后运行多个实例,只有一个独立实例。
我不确定是否相关,但我还注意到 Discourse 的数学公式插件也无法正确渲染。虽然公式在预览时能正确显示,但一旦发布帖子,JavaScript 似乎未被包含进来,导致无法正确渲染。数学公式问题并非当前优先级,只是在此提及,以防它提供更多线索。
我现在真的束手无策,日志看起来一切正常,甚至不确定该发布什么内容来寻求帮助。任何建议都将不胜感激。
这表明安装存在严重问题。请移除所有第三方插件并重新构建。
freemo
(Jeffrey Phillips Freeman)
3
我试过了,但没成功。很可能是我的安装方式有问题。我自己也是开发者,您知道安装过程中可能出现什么故障导致这种情况吗?有没有什么提示可以指引我进行调试和排查?
您是如何安装的?您是否使用了 GitHub 上提供的官方指南?
freemo
(Jeffrey Phillips Freeman)
5
最初我采用的是这个流程。遗憾的是,它不支持我目前可用的大多数企业级生产环境。大多数框架都是运行、启动和部署容器。由于标准安装方式的特性,无法在这些工具和环境中工作。
因此,我正试图改进/修复该流程,使其能够安装在任何支持标准 Docker 部署的环境中。虽然这项工作已基本完成,但我仍在努力解决最初发布的那个 bug。
一旦它能够正常运行,我自然会将其发布给其他人使用。过去一年我一直在等待 Discourse 原生支持标准 Docker,但最终还是决定自己做出贡献。已经非常接近成功了,希望更有经验的同仁能告诉我应该从何处着手。
freemo
(Jeffrey Phillips Freeman)
6
请问有什么可以帮忙的吗?哪怕只是提示一下该从哪里入手、如何调试,或者提供一些思路,我们都会非常感激。
michaeld
(Michael - Communiteq)
7
您确定请求能顺利发送吗?在开发者工具的“网络”标签页中您看到了什么?
您描述的行为通常是 JavaScript 端出现错误的环境所特有的。
freemo
(Jeffrey Phillips Freeman)
8
谢谢,这可能会有很大帮助。既然 MathJax 插件似乎时有时无地工作,那么问题很可能与 JavaScript 有关。
我刚刚在清除缓存后尝试更改设置,并留意了网络标签页。在更改设置前后都没有出现错误(尽管 bug 确实出现了)。
认为更改完全没有生效是不合理的,因为行为表现如下:我做出更改,然后刷新页面,更改似乎被还原了。但如果我只是继续刷新(而不尝试再次更改),那么大约有一半的情况下更改会显示出来。每次刷新时,显示旧设置和新设置的概率各约为 50%。
我还在控制台中发现了以下错误,但我认为它与该问题无关?
在注册表中找不到 widget actions-summary-item
freemo
(Jeffrey Phillips Freeman)
11
我像之前一样尝试了这种方法,但并没有帮助。不过我怀疑自己是否真的进入了安全模式。我访问了 */safe-mode,弹出了进入安全模式的对话框,并接受了它。但我注意到,我使用的 Material Design 主题仍然显示着。所以,虽然我以为自己处于安全模式,但实际上可能并没有?
无论如何,这个错误依然存在。
freemo
(Jeffrey Phillips Freeman)
13
两个容器,一个用于 Sidekiq,一个用于 Discourse 核心服务。该配对仅运行一个实例。我使用托管服务在独立的机器上运行 PostgreSQL 和 Redis。
pfaffman
(Jay Pfaffman)
14
哎呀,抱歉,这似乎是个显而易见的问题,你已经回答过了。
编辑:也许这也不是,但我之前在使用另一个进程正在使用的 Redis 数据库时遇到过类似的问题。
freemo
(Jeffrey Phillips Freeman)
15
我想我明白为什么安全模式无法工作了。它在刷新时被关闭了。
刚刚在安全模式下测试,问题依然存在。
freemo
(Jeffrey Phillips Freeman)
17
这取决于您的具体含义。在用于调试的“检查”网络标签页中,一切均显示为 200,控制台仅包含我上面提到的错误(可能与此无关)。在 Docker 日志中,当我进行设置时,看到以下内容,确认操作已成功。然而,当我刷新设置页面时,50% 的情况下显示的是 ld 设置,另外 50% 的情况下显示的是新设置。
> 2019-08-20T13:14:15.960335498Z Started PUT "/admin/site_settings/categories_topics" for 213.127.19.53 at 2019-08-20 13:14:15 +0000
> 2019-08-20T13:14:15.968667966Z Processing by Admin::SiteSettingsController#update as */*
> 2019-08-20T13:14:15.968951769Z Parameters: {"categories_topics"=>"25", "id"=>"categories_topics"}
> 2019-08-20T13:14:15.978407541Z Rendering text template
> 2019-08-20T13:14:15.978607623Z Rendered text template (0.0ms)
> 2019-08-20T13:14:15.978834745Z Completed 200 OK in 10ms (Views: 0.6ms | ActiveRecord: 0.0ms)
> 2019-08-20T13:18:39.821498901Z [ N 2019-08-20 13:18:39.8209 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6157, application /opt/bitnami/discourse (production)
> 2019-08-20T13:18:59.866033984Z [ N 2019-08-20 13:18:59.8655 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 5973, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:04.848923491Z [ N 2019-08-20 13:19:04.8484 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6018, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:08.900933057Z [ N 2019-08-20 13:19:08.9004 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 5995, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:09.499349110Z [ N 2019-08-20 13:19:09.4989 4304/T4 age/Cor/CoreMain.cpp:1146 ]: Checking whether to disconnect long-running connections for process 6041, application /opt/bitnami/discourse (production)
> 2019-08-20T13:19:29.645095032Z Creating scope :open. Overwriting existing method Poll.open.
Stephen
(Stephen)
18
那么它是如何安装的?如果您没有使用标准安装,您使用的是哪种安装方法和软件包?
freemo
(Jeffrey Phillips Freeman)
20
它并未采用标准安装方式,不过我确实将其作为学习指南参考。我基本上需要编写或修改 Docker 文件,使其能够与 Docker Compose 配合使用。随后,在本地确认 Docker Compose 运行正常后,我将其转换为 JSON 格式,以便与 AWS CLI 工具配合使用。
因此,该安装流程与标准流程相比有相当大的变化。