【发布时间】:2022-01-27 00:01:01
【问题描述】:
几个月来,我一直在使用 Browsershot 从我的网站检索一些图像,没有任何问题,但最近(过去 1-2 周),请求已超时。进一步看,我发现它在尝试执行命令时一直在消耗大量的 cpu 功率。
据我所知,这种持续的 CPU 消耗将持续到我重新启动服务器为止。在这个例子中我也只要求制作一张图像,但是chrome有三个进程。我不确定这是否不正常。
为了确保这不是我网站上的某些东西或可能是导致此问题的设置,我使用了一个简单的函数调用。
Browsershot::url("https://example.com")
->setScreenshotType('png')
->save(Storage::path("overview_images/test.png"));
不幸的是,问题仍然存在。
我使用的是 Laravel 配置的 Forge 服务器,所以我使用了Github page 推荐的安装。就像我说的,直到几周前它一直运行良好。在那个时候没有对 Browsershot 进行任何更改,这会导致这样的事情。我已尝试按照步骤再次安装,但仍然出现。
非常感谢任何帮助!
编辑 1:
在进一步调查之后,我发现问题出在 Puppeteer,而不是 Browsershot。我尝试实现example.js provided by Google,但遇到了完全相同的问题。
编辑 2:
不知何故,我能够修复它。我不能确切地知道它是怎么做的,但我可以为可能发现这个问题的其他人提供一些帮助。
运行ndb example.js,我收到消息
Downloading Chromium r624492...
ERROR: Failed to download Chromium r624492!
Error: EACCES: permission denied
即使我已经安装了 puppeteer(多次),我猜它一直在尝试下载 Chromium 并且失败。我想这就是为什么 CPU 使用率如此之高并且在服务器重新启动之前从未停止过。
话虽如此,我并没有特别改变任何让它突然开始工作的东西。如果它有帮助的话,这是我在它突然开始工作时使用的一系列命令。
> node example.js // Didn't Work. Would be in continuous command with high CPU usage until cancelled
> sudo npm install -g ndb
> ndb example.js // This is when I received the message about downloading Chomium
> node example.js // It worked ?
仍然不知道为什么会发生这种情况的确切原因,所以如果有人能弄清楚这一点,我将把它作为一个悬而未决的问题。
编辑 3:
又坏了。
【问题讨论】:
标签: javascript php laravel puppeteer browsershot