node.js - 几天后,我无法再启动 Puppeteer,直到我重新启动服务器

标签 node.js linux ubuntu puppeteer seccomp

  • puppeteer 版本:10.2.0
  • 平台/操作系统版本:Ubuntu 20.04.3 LTS aarch64
  • Node.js 版本:v.14.17.6
  • 发生在任何 URL 上。

  • 这是我的测试脚本:
    bug.hr/homepage.js
    const puppeteer = require('puppeteer-extra');
    
    (async () => {
        const eventPage = `https://www.bug.hr/`;
        const browser = await puppeteer.launch({
            headless: true,
            dumpio: true
        });
        const page = await browser.newPage();
        await page.goto(eventPage, {
            waitUntil: 'domcontentloaded'
        });
        console.log("TITLE: ", await page.evaluate(() => document.title));
        await browser.close();
    })();
    
    那应该启动 Puppeteer(在我重新启动服务器后它会启动),相反,我得到了这个:
    ubuntu@ip-123-45-67-89:/var/www/tests$ env DEBUG="puppeteer:*" node bug.hr/homepage.js 
      puppeteer:launcher Calling /usr/bin/chromium-browser --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=Translate --disable-hang-monitor --disable-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-sync --force-color-profile=srgb --metrics-recording-only --no-first-run --enable-automation --password-store=basic --use-mock-keychain --enable-blink-features=IdleDetection --headless --hide-scrollbars --mute-audio about:blank --remote-debugging-port=0 --user-data-dir=/tmp/puppeteer_dev_chrome_profile-fvYjAc +0ms
    
    DevTools listening on ws://127.0.0.1:42943/devtools/browser/5a94e4ce-f053-4e83-afdb-f44731fc185e
    [1109/015336.602361:ERROR:devtools_http_handler.cc(292)] Error writing DevTools active port to file
    [1109/015336.608627:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015336.612599:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015336.613361:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015336.613265:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
      puppeteer:protocol:SEND ► {"method":"Target.setDiscoverTargets","params":{"discover":true},"id":1} +0ms
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"17591FCF231B151133561BADC2D1A20C","type":"page","title":"","url":"about:blank","attached":false,"canAccessOpener":false,"browserContextId":"3F175AC4C3C999720E0FFEFA74971974"}}} +0ms
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"3066064f-b08d-429f-af6c-99c828566f63","type":"browser","title":"","url":"","attached":false,"canAccessOpener":false}}} +1ms
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"7b188175-60bc-4608-b6a2-a83ed34381b0","type":"browser","title":"","url":"","attached":true,"canAccessOpener":false}}} +0ms
      puppeteer:protocol:RECV ◀ {"id":1,"result":{}} +0ms
      puppeteer:protocol:SEND ► {"method":"Target.createTarget","params":{"url":"about:blank"},"id":2} +4ms
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCreated","params":{"targetInfo":{"targetId":"BD017C91F9A3803C4D1204C1F648B61E","type":"page","title":"","url":"","attached":false,"canAccessOpener":false,"browserContextId":"3F175AC4C3C999720E0FFEFA74971974"}}} +4ms
      puppeteer:protocol:RECV ◀ {"id":2,"result":{"targetId":"BD017C91F9A3803C4D1204C1F648B61E"}} +0ms
    [1109/015336.626616:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCrashed","params":{"targetId":"17591FCF231B151133561BADC2D1A20C","status":"crashed","errorCode":133}} +187ms
    [1109/015336.827392:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015336.827421:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 1 time(s)
    [1109/015336.834997:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015336.838813:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015336.839148:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
      puppeteer:protocol:RECV ◀ {"method":"Target.targetCrashed","params":{"targetId":"BD017C91F9A3803C4D1204C1F648B61E","status":"crashed","errorCode":133}} +49ms
    [1109/015337.039942:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015337.039973:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 2 time(s)
    [1109/015337.047216:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015337.051080:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.051332:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.248703:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015337.248732:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 3 time(s)
    [1109/015337.255892:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015337.259819:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.260091:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.454161:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015337.454191:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 4 time(s)
    [1109/015337.461741:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015337.465935:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.466181:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.666248:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015337.666276:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 5 time(s)
    [1109/015337.673524:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is swiftshader, ANGLE is 
    [1109/015337.677539:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.677807:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.880581:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015337.880610:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 6 time(s)
    [1109/015337.882645:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is disabled, ANGLE is 
    [1109/015337.884399:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015337.884679:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015338.076122:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015338.076151:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 7 time(s)
    [1109/015338.078253:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is disabled, ANGLE is 
    [1109/015338.079942:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015338.080236:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015338.268891:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015338.268920:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 8 time(s)
    [1109/015338.271026:ERROR:gpu_init.cc(453)] Passthrough is not supported, GL is disabled, ANGLE is 
    [1109/015338.272679:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015338.272975:FATAL:sandbox_bpf.cc(283)] Kernel refuses to turn on BPF filters
    [1109/015338.461377:ERROR:gpu_process_host.cc(979)] GPU process exited unexpectedly: exit_code=133
    [1109/015338.461406:WARNING:gpu_process_host.cc(1292)] The GPU process has crashed 9 time(s)
    [1109/015338.461419:FATAL:gpu_data_manager_impl_private.cc(417)] GPU process isn't usable. Goodbye.
    
    我不能随意复制它。这发生在服务器运行一周或两周之后。
    重新启动服务器后,它再次工作。
    我相信罪魁祸首是Kernel refuses to turn on BPF filters ,从日志中。
    错误来源:https://chromium.googlesource.com/chromium/src/+/lkgr/sandbox/linux/seccomp-bpf/sandbox_bpf.cc#282
    可以通过 --disable-seccomp-filter-sandbox 来修复Chrome 的参数,它引入了安全问题,因为它禁用了 Chrome 沙箱的第 2 层 (https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux/sandboxing.md#the-sandbox-1)/usr/bin/chromium-browser --product-version给出 95.0.4638.69
    当我运行 apt update && apt upgrade 时也会发生这种情况:
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524/usr/bin/mandb:
    can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter: Unknown error 524
    /usr/bin/mandb: can't load seccomp filter/usr/bin/mandb: can't load seccomp filter: Unknown error 524: Unknown error 524
    
    这在 Ubuntu-amd64(现在是 Arm)上没有发生。
    有任何想法吗?
    谢谢

    最佳答案

    尝试添加 {args: ['--no-sandbox']} await puppeteer.launch() 中的标志因为它似乎是一个沙盒问题,给出了错误 FATAL:sandbox_bpf.cc(283)

    关于node.js - 几天后,我无法再启动 Puppeteer,直到我重新启动服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69892137/

    相关文章:

    ubuntu - 无法在 Ubuntu 中使用来自 CUDA 的 deviceQuery

    javascript - 谷歌地图验证两个经纬度是否位于正确方向的路径上或附近

    linux - 获取 BASH 命令 PID

    linux 从多个文件中获取特定字段

    c++ - 读取 .txt 文件中的多行并输出每行的答案

    r - Ubuntu集群管理

    node.js - Sequelize hooks,有什么方法可以获取 Express 的用户?

    javascript - 如何使用should.js作为全局变量:

    node.js - 动态注入(inject)脚本标签pre </body>

    linux - Linux 中的 ~/和 ~ 有什么区别?