ckshen
1
您好,最近我们的实例频繁收到“极端负载”消息。今天发生在上午 9:40。
我查看了服务器日志。上午 9:40 时,CPU 和负载似乎正常:
内存在全天也保持相当稳定:
峰值似乎出现在磁盘 I/O 以及出站/入站带宽上:
这让我怀疑是上午 9:40 的爬虫请求所致。但我不确定是否有方法可以核实这一点。我查看了爬虫列表及其请求数量,大部分来自 Google 和 Bing,因此我们肯定不会屏蔽它们。
由此我产生了以下疑问:
- 是否有日志可以显示在特定时间点谁在访问网站?
- 是否有方法让这些“优质”爬虫分散其请求?
- 增加 CPU 或内存是否有助于改善这种情况?我对此有些怀疑,因为 CPU 和内存使用率并未出现峰值。平均内存使用率达到 80% 是否过高?
我们目前的配置是 2 个 vCPU 和 2GB 内存。我们将实例设置为 4 个 Unicorn 工作进程,这似乎与我们拥有的内存量相符。
Falco
(Falco)
2
有的,请查看 /var/discourse/shared/standalone/log/var-log/nginx/access.log。
有的,可以使用“减缓爬虫用户代理速度”(slow down crawler user agents)站点设置。
看起来您在 9:40 的峰值期间遇到了 I/O 等待。增加内存可能有所帮助,因为可以缓存更多内容,但我不确定该峰值是读取还是写入造成的,因为您截断了图表图例
。
不过,如果您负担得起,将 Droplet 升级到下一个可用规格总是会有帮助的。
ckshen
3
谢谢。我查看了上午 9:40 的日志,请求看起来来自用户操作(消费者浏览器),而非爬虫。
绿色的峰值是读取。
是的,既然看起来不是爬虫造成的,我打算尝试升级到下一个 Droplet 规格,将内存从 2GB 增加到 4GB,看看是否有帮助。
用户活动成为原因让我有点意外,因为我一直以为过去两年活跃发帖者比以前少了。但当我查看 Google Analytics 时,用户数量确实在稳步增长——也许尽管发帖者减少了,但“潜水者”增加了……
感谢指点,非常感谢。
ckshen
4
从图表来看,内存翻倍确实产生了差异,尤其是在磁盘 I/O 和负载尖峰方面。