如果您通过用户界面进行更新,最终会收到一条消息,提示您必须进行命令行更新。这取决于基础 Discourse 镜像,而不是 Debian。
而且使用两容器方法根本不会有 GUI 更新按钮,对吗?
GUI 更新来自 discourse_docker 插件。如果您有该插件,您就有 GUI 更新。
当在图像处理工具中发现漏洞时,过去确实发生过远程代码执行,这意味着你离系统被入侵仅一步之遥。
Clear Linux 为 Linux 的启动速度设定了标准。这是了不起的工作,我全心全意地支持。
哦,那确实改变了一些事情。出于某种原因,我一直认为 GUI 更新程序无法与非标准的 2 容器安装配合使用。在这种情况下,只要管理员技术能力过硬,2 容器安装似乎就没有太多缺点。我肯定想要 GUI 更新,例如,如果我只带手机旅行,并且有重要的 Discourse 安全更新发布,我至少可以在没有 SSH 访问权限的情况下进行应用。
这是我的看法。你基本上只需要足够留意,就能知道何时需要重建数据容器以应对 Postgres 或 Redis 的升级。你还需要知道如何执行 ./launcher bootstrap web_only && ./launcher destry web_only; ./launcher start web_only,但这并不难。你也可以只执行 ./launcher rebuild web_only,但这会在重建期间导致网站下线。
为了完整起见:Web UI 构建通常不会有任何停机时间;引导/销毁/启动会有极小的停机时间,我只会像平常一样进行,并提供外部维护页面,就像这里记录的外部 nginx 一样。但无论如何,这都是一种好做法,即使只是为了将 IPv6 地址放入容器中。
很好,谢谢。使用两个容器的安装方式,当容器需要重建时,您仍然会收到 Discourse 仪表板通知吗?在这种情况下,我是否可以确定是仅重建应用程序容器还是也重建数据容器?
是的。我现在看到了,因为我还没有应用“只有版本已更改”的 3.1.0.beta1 更新。![]()
这种情况属于“一切正常,直到它不再正常”——当 UI 更新失败时,人们会惊慌失措,不知道该运行 git pull; ./launcher rebuild app 来解决问题。我认为每次 GUI 更新失效时都会发生这种情况。它又发生了:
我觉得这种恐慌凸显了拥有一个一致的、正常的更新机制来避免这种体验的价值。
与此同时,我也遇到了一个不那么频繁但同样存在的问题:引导程序破坏了正在运行的系统:零停机时间更新偶尔会像这样中断,平均一年一两次?所以不要在引导和销毁/启动之间拖延。
我应该更新文本以使其更清晰,我接下来会这样做。
我还没有部署 LibreTranslate,但正在考虑部署它以使我的网站更具国际可用性。
如果我成功部署,我打算将其编辑到首帖中。![]()
这其中很多内容对我来说太深奥了,但我还是要说声谢谢,因为您提到的一些设置及其调整建议,以及对社区运行影响的解释,对我来说已经非常宝贵了!
很高兴它对超出我既定目标受众的人也有帮助。
我几天前用它来搭建一个新的 Discourse 实例,它也帮到了我,因为我自己也记不住所有这些。![]()
我认为维基中关于 THP 配置可能存在问题。
我之前在 Ubuntu 上遇到了 Redis 问题:
Your Redis network connection is performing extremely poorly. Last RTT readings were [96585, 101554, 97189, 99769, 94618], ideally these should be < 1000. Ensure Redis is running in the same AZ or dat
我曾认为 THP 已经被禁用(因为我遵循了维基的指示)——但事实证明它仍然是启用的
。我记得禁用 THP 最终为我解决了上述问题(去年年底)。
Ubuntu 24.04 LTS(遵循当前维基):
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
cat /etc/sysctl.d/10-huge-pages.conf
# 输出:
# sys.kernel.mm.transparent_hugepage.enabled=never
sudo sysctl --system
# 输出
* Applying /usr/lib/sysctl.d/10-apparmor.conf ...
* Applying /etc/sysctl.d/10-bufferbloat.conf ...
* Applying /etc/sysctl.d/10-console-messages.conf ...
* Applying /etc/sysctl.d/10-huge-pages.conf ...
* Applying /etc/sysctl.d/10-ipv6-privacy.conf ...
* Applying /etc/sysctl.d/10-kernel-hardening.conf ...
* Applying /etc/sysctl.d/10-magic-sysrq.conf ...
* Applying /etc/sysctl.d/10-map-count.conf ...
* Applying /etc/sysctl.d/10-network-security.conf ...
* Applying /etc/sysctl.d/10-ptrace.conf ...
* Applying /etc/sysctl.d/10-zeropage.conf ...
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
* Applying /etc/sysctl.d/99-cloudimg-ipv6.conf ...
* Applying /usr/lib/sysctl.d/99-protect-links.conf ...
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
kernel.apparmor_restrict_unprivileged_userns = 1
net.core.default_qdisc = fq_codel
kernel.printk = 4 4 1 7
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
kernel.kptr_restrict = 1
kernel.sysrq = 176
vm.max_map_count = 1048576
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2
kernel.yama.ptrace_scope = 1
vm.mmap_min_addr = 65536
kernel.pid_max = 4194304
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
fs.protected_fifos = 1
fs.protected_hardlinks = 1
fs.protected_regular = 2
fs.protected_symlinks = 1
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
AlmaLinux 10(遵循当前维基):
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
echo 'sys.kernel.mm.transparent_hugepage.enabled=never' > /etc/sysctl.d/10-huge-pages.conf
cat /etc/sysctl.d/10-huge-pages.conf
# 输出:
# sys.kernel.mm.transparent_hugepage.enabled=never
sudo sysctl --system
# 输出
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
* Applying /etc/sysctl.d/10-huge-pages.conf ...
* Applying /usr/lib/sysctl.d/10-map-count.conf ...
* Applying /usr/lib/sysctl.d/50-coredump.conf ...
* Applying /usr/lib/sysctl.d/50-default.conf ...
* Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
* Applying /usr/lib/sysctl.d/50-redhat.conf ...
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
kernel.yama.ptrace_scope = 0
vm.max_map_count = 1048576
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 16
fs.suid_dumpable = 2
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.eth0.rp_filter = 2
net.ipv4.conf.eth1.rp_filter = 2
net.ipv4.conf.lo.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth1.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.eth0.promote_secondaries = 1
net.ipv4.conf.eth1.promote_secondaries = 1
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.ping_group_range = 0 2147483647
net.core.default_qdisc = fq_codel
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.protected_regular = 1
fs.protected_fifos = 1
net.core.optmem_max = 81920
kernel.pid_max = 4194304
kernel.kptr_restrict = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
也许这可以用于维基?我刚刚测试了 Ubuntu 24.04 和 AlmaLinux 10,它似乎有效:
echo 'w /sys/kernel/mm/transparent_hugepage/enabled - - - - never' | sudo tee /etc/tmpfiles.d/10-huge-pages.conf
sudo systemd-tmpfiles --create /etc/tmpfiles.d/10-huge-pages.conf
确认:
cat /sys/kernel/mm/transparent_hugepage/enabled
预期输出:
always madvise [never]
很高兴听到这个消息——如果我们不知道它是否有帮助,我们可能只是在互相模仿!
我不认为 /etc/sysctl.d 已被弃用。你能检查一下那里列出的其他文件,看看是哪一个或哪几个覆盖了 /etc/sysctl.d/10-huge-pages.conf?也许是那些 50-priority 文件中的一个?
更好的解决方案可能是更改 huge-pages 设置的优先级以使其生效。但我目前在我的系统上没有运行这两个版本。
另外,检查一下 tuned 是否覆盖了该设置。
我只在 THP 配置应用时遇到了问题,vm.overcommit.memory 像预期的那样通过 /etc/sysctl.d 应用了。去年在某台服务器上注意到了这个问题并解决了。所以昨天我尝试通过几个微型 VPS 进行了检查。
刚刚在全新的 AlmaLinux 9 微型 VPS 上尝试了以下操作,试图查看是否有任何默认的 .conf 文件影响了 THP 配置:
echo always | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# always
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
sysctl --system
# 输出:
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
* Applying /usr/lib/sysctl.d/50-coredump.conf ...
* Applying /usr/lib/sysctl.d/50-default.conf ...
* Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
* Applying /usr/lib/sysctl.d/50-redhat.conf ...
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
kernel.yama.ptrace_scope = 0
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 16
fs.suid_dumpable = 2
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.eth0.rp_filter = 2
net.ipv4.conf.eth1.rp_filter = 2
net.ipv4.conf.lo.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth1.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.eth0.promote_secondaries = 1
net.ipv4.conf.eth1.promote_secondaries = 1
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.ping_group_range = 0 2147483647
net.core.default_qdisc = fq_codel
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.protected_regular = 1
fs.protected_fifos = 1
net.core.optmem_max = 81920
kernel.pid_max = 4194304
kernel.kptr_restrict = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# [always] madvise never
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# never
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# always madvise [never]
sysctl --system
# 输出:
* Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
* Applying /usr/lib/sysctl.d/50-coredump.conf ...
* Applying /usr/lib/sysctl.d/50-default.conf ...
* Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
* Applying /usr/lib/sysctl.d/50-pid-max.conf ...
* Applying /usr/lib/sysctl.d/50-redhat.conf ...
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
kernel.yama.ptrace_scope = 0
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
kernel.core_pipe_limit = 16
fs.suid_dumpable = 2
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.eth0.rp_filter = 2
net.ipv4.conf.eth1.rp_filter = 2
net.ipv4.conf.lo.rp_filter = 2
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.eth1.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.eth0.promote_secondaries = 1
net.ipv4.conf.eth1.promote_secondaries = 1
net.ipv4.conf.lo.promote_secondaries = 1
net.ipv4.ping_group_range = 0 2147483647
net.core.default_qdisc = fq_codel
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
fs.protected_regular = 1
fs.protected_fifos = 1
net.core.optmem_max = 81920
kernel.pid_max = 4194304
kernel.kptr_restrict = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
cat /sys/kernel/mm/transparent_hugepage/enabled
# 输出:
# always madvise [never]
这就是我要求您查看实际文件以查找覆盖它的内容的原因,这样我就可以对建议的覆盖优先级做出明智的更改。
我目前的(有限的)理解是,我之前帖子中的命令/输出表明没有覆盖。
查看全新 AlmaLinux 9 实例上的文件:
这些结果为空:
grep -r "transparent_hugepage" /usr/lib/sysctl.d/ /etc/sysctl.d/ /etc/sysctl.conf
grep -r "transparent" /usr/lib/sysctl.d/ /etc/sysctl.d/ /etc/sysctl.conf
grep -r "huge" /usr/lib/sysctl.d/ /etc/sysctl.d/ /etc/sysctl.conf
grep -r "page" /usr/lib/sysctl.d/ /etc/sysctl.d/ /etc/sysctl.conf
配置文件中的默认值:
/usr/lib/sysctl.d/50-redhat.conf:kernel.kptr_restrict = 1
/usr/lib/sysctl.d/50-redhat.conf:net.ipv4.conf.default.rp_filter = 1
/usr/lib/sysctl.d/50-redhat.conf:net.ipv4.conf.*.rp_filter = 1
/usr/lib/sysctl.d/50-redhat.conf:-net.ipv4.conf.all.rp_filter
/usr/lib/sysctl.d/10-default-yama-scope.conf:kernel.yama.ptrace_scope = 0
/usr/lib/sysctl.d/50-libkcapi-optmem_max.conf:net.core.optmem_max = 81920
/usr/lib/sysctl.d/50-coredump.conf:kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
/usr/lib/sysctl.d/50-coredump.conf:kernel.core_pipe_limit=16
/usr/lib/sysctl.d/50-coredump.conf:fs.suid_dumpable=2
/usr/lib/sysctl.d/50-default.conf:kernel.sysrq = 16
/usr/lib/sysctl.d/50-default.conf:kernel.core_uses_pid = 1
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.default.rp_filter = 2
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.*.rp_filter = 2
/usr/lib/sysctl.d/50-default.conf:-net.ipv4.conf.all.rp_filter
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.default.accept_source_route = 0
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.*.accept_source_route = 0
/usr/lib/sysctl.d/50-default.conf:-net.ipv4.conf.all.accept_source_route
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.default.promote_secondaries = 1
/usr/lib/sysctl.d/50-default.conf:net.ipv4.conf.*.promote_secondaries = 1
/usr/lib/sysctl.d/50-default.conf:-net.ipv4.conf.all.promote_secondaries
/usr/lib/sysctl.d/50-default.conf:-net.ipv4.ping_group_range = 0 2147483647
/usr/lib/sysctl.d/50-default.conf:-net.core.default_qdisc = fq_codel
/usr/lib/sysctl.d/50-default.conf:fs.protected_hardlinks = 1
/usr/lib/sysctl.d/50-default.conf:fs.protected_symlinks = 1
/usr/lib/sysctl.d/50-default.conf:fs.protected_regular = 1
/usr/lib/sysctl.d/50-default.conf:fs.protected_fifos = 1
/usr/lib/sysctl.d/50-pid-max.conf:kernel.pid_max = 4194304
我正在为我的 Discourse 实例运行 AlmaLinux 9,我提供的配置成功禁用了它们所有的 THP。如果通过 sysctl.d 禁用 THP 在没有覆盖设置的情况下不起作用,并且 tuned 也没有覆盖它,我认为这是一个错误。
我以为您在说它在 AlmaLinux 10 上不再起作用了,这就是我询问是什么阻止了它在那里生效的原因。