如何确定性能瓶颈?

我尝试搜索过,但没有找到最近发布的帖子,所以想问一下,以确定什么才是正常的和预期的。

我最近从其他论坛过来,第一页加载速度相当快,但使用 Discourse 时,页面会加载,但会出现一个旋转的圆圈,同时等待页面渲染——我不确定这是服务器延迟还是客户端/JS延迟在根据返回的服务器结果构建页面。

延迟大约是 5-10 秒——但之后性能通常还可以。

如果问题可能出在服务器/托管方面,那么通常的问题是什么——因为所有指标看起来都很低。CPU、磁盘和内存似乎都没有达到最大值,所以我不知道如果结果与服务器无关,应该在哪里投入$$。有什么技巧可以监控或观察指标,以帮助显示 Discourse 在等待东西时花费了多少时间?

您可以看到第一页在此处呈现的进度。 CDN 可能会有所帮助。

多远?在哪里?

您使用的是哪个版本的 Discourse?

您正在查看/测试的主题中有多少帖子?

我怀疑是“快速和元” :wink:

1 个赞

最新的 2.8.x 版本,只有大约 30 名用户。我运行在双核 vCPU、2GB 内存和 SSD 磁盘上。

如前所述,服务器上的所有指标都显示没有负载,因此不明白为什么页面完全呈现之前会有 5 秒的旋转等待。

所以,是不是没有什么可以检查或监控的,只需要安装然后祈祷一切顺利??

实际上,更像是服务器变冷了,我只是请求刷新一个很久没刷过的页面——后端部分会休眠之类的吗,以至于不频繁使用意味着第一个人可能要比平时多等一会儿?

您说的 30 个用户是指并发用户还是整个用户群?

如果是 30 个并发用户,那么您的配置可能有点低。

平均内存使用率是多少?30-50-80%???

我碰巧在查看 G Analytics 的速度和性能图表,注意到自我们从 2.2 升级到 2.9 后出现了一些变化,性能有所下降,但我需要进一步查看。我并没有真正感觉到明显的减慢,反而感觉更快了。那么我了解多少,或者 G Analytics 了解多少呢!

我还读到关于每个主题 10K 帖子限制的说法,如果帖子很多,我认为它必须在显示之前将整个帖子加载到内存中,这在初次查看时会被认为是缓慢的。

我发现一旦它加载了某些内容,之后一切都会很快。我不是专家,但浏览器也可能导致这种情况,以及用于提供 discourse 体验的各种其他技巧。

这是托管商的 VPS,还是其他什么?它是如何安装的?了解 2vcpu 有所帮助——并非所有处理器都相同。

实例和客户端之间有什么吗?反向代理或 CloudFlare 之类的东西?

1 个赞

我终于打开了开发者工具,可以看到一些错误消息……看起来 a) 字体丢失或找不到,b) 它正在使用 IP 而不是正确的 FQDN——我不确定 IP 是否正确

The FetchEvent for "https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9" resulted in a network error response: the promise was rejected.
Promise.then (async)
(anonymous) @ Router.mjs:60
The FetchEvent for "https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9" resulted in a network error response: the promise was rejected.
Promise.then (async)
(anonymous) @ Router.mjs:60
NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9"}]
    at a.makeRequest (https://community.hubivue.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)
makeRequest @ NetworkFirst.mjs:167
color_definitions_light_4_1_530ebcc4a553d42866a6f343d784841cf5c0b816.css:1          GET https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9 net::ERR_FAILED
NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9"}]
    at a.makeRequest (https://community.hubivue.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)
makeRequest @ NetworkFirst.mjs:167
color_definitions_light_4_1_530ebcc4a553d42866a6f343d784841cf5c0b816.css:1          GET https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9 net::ERR_FAILED

Google云虚拟机,主机和网站之间没有任何东西/没有CDN

好的,看起来您是在 Google 上托管此实例。

有人尝试在 DNS 名称之前针对 IP 地址安装它吗?

1 个赞

太棒了……我将字体选择重置为默认值(即 Arial),所有功能都运行正常。看起来像是设置中的字体选择存在错误或问题。问题已解决,我暂时使用 Arial。

1 个赞

可能吧。不确定。如果那是个问题,有什么办法可以重置回原样吗?

这取决于他们在使用 IP 地址后是如何切换到使用主机名的。\n\n安装过程是否遵循了标准安装中的步骤?我建议与负责配置实例的人员沟通,以了解具体的操作。IP 地址可能仍在其他地方被引用。

1 个赞

有什么命令可以重置安装或修复此问题?似乎无法再次更改主机名,这很愚蠢。这种限制是出于设计考虑吗?

请注意,现在使用基本字体后性能已有所改善——问题似乎与使用 Google Roboto 字体有关。

1 个赞

我猜我应该或多或少地遵循这个指南……

试一试也无妨,但如果你不知道该实例的任何历史记录,我们就无法确认你运行的是否是官方支持的安装。

1 个赞