docker 中的虚拟大小总是随着 puppeteer 的增加而增加

Virtual size in docker is always increasing with puppeteer

提问人:Danubio 提问时间:7/19/2022 最后编辑:Danubio 更新时间:7/20/2022 访问量:576

问:

我正在使用 nodejs 和 Puppeteer 开发一个小程序,目标是生成一定数量的 PDF 文件。该程序正在与 bluebird 模块一起工作,以实现并发性。问题在于物理和虚拟内存的使用不会停止增加。所有生成的文档的大小约为 25GB,但 docker 容器中使用的内存要大得多:

pdf-generator     64.2GB (virtual 68.4GB)

我们用 Puppeteer 以这种方式生成 PDF:

async function generatePDF(browser, num) {
  const page = await browser.newPage();
  try {
    const pdfUrl = pdfPathURL(num);
    await page.goto(pdfUrl, {
      waitUntil: ["domcontentloaded", "networkidle0", "load"],
      timeout: 300000,
    });
    // await page.waitForLoadState({ waitUntil: "domcontentloaded" });
    const buffer = await page.pdf({
      format: "A4",
      printBackground: true,
      landscape: true,
      preferCSSPageSize: true,
    });
    await page.close()
    return buffer.toString("base64");
  } catch (error) {
    let messageError = error;
    console.log(messageError);
    return "";
  }
  } finally {
   await page.close();
  }
}

[编辑] 这是打开 Chromium 实例的代码。每个请求一个:

    async function generatePDFFile(id) {
      let pdfFile;
      let errorGeneration = "";
      const browser = await launchPuppeteer();
      try {
       if (!browser) {
        errorGeneration = `Error getting Chromium instance`;
       }
        if (!browser.isConnected()) {
          errorGeneration = `Error connecting to Chromium`;
       }
      pdfFile = await generatePDFPage(browser, id);

      console.log(`PDF file generated of id:`, id);
  } catch (error) {
    errorGeneration = error;
    console.log("errorGeneration: ", error);
  }
  finally {
    await browser.close();
  }
  return { id, pdf: pdfFile, error: errorGeneration };
}
  const puppeteerParams = {
    headless: true,
    args: [
      "--disable-gpu",
      "--disable-dev-shm-usage",
      "--disable-setuid-sandbox",
      "--no-sandbox",
      "--font-render-hinting=none",
      '--single-process', 
      '--no-zygote'
    ],
  };

容器中的命令top

Tasks:  19 total,   1 running,  18 sleeping,   0 stopped,   0 zombie
%Cpu(s): 45.4 us, 11.0 sy,  0.0 ni, 42.5 id,  0.3 wa,  0.0 hi,  0.9 si,  0.0 st
MiB Mem :  15862.5 total,   1418.4 free,   9686.2 used,   4757.9 buff/cache
MiB Swap:   2048.0 total,   1291.0 free,    757.0 used.   4953.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                                                                                                                   
  34855 myuser  20   0 1124.8g 222708 149664 S  81.0   1.4   0:02.74 chrome                                                                                                                                                                                                                                    
  34810 myuser  20   0 1124.8g 212544 146712 S  77.3   1.3   0:02.61 chrome                                                                                                                                                                                                                                    
  34918 myuser  20   0 1124.8g 184764 141052 S  36.7   1.1   0:01.10 chrome                                                                                                                                                                                                                                    
     31 myuser  20   0  706628 142100  33080 S  35.7   0.9   2:19.22 node                                                                                                                                                                                                                                      
  34968 myuser  20   0 1124.7g 136748 112832 S   9.3   0.8   0:00.28 chrome                                                                                                                                                                                                                                    
  35062 myuser  20   0 1124.7g 138452 114036 S   9.0   0.9   0:00.27 chrome                                                                                                                                                                                                                                    
  35013 myuser  20   0 1124.8g 137448 113456 S   8.3   0.8   0:00.25 chrome                                                                                                                                                                                                                                    
     60 myuser  20   0  965160 103512  33040 S   7.7   0.6   0:22.25 node                                                                                                                                                                                                                                      
  35106 myuser  20   0 1124.6g 105352  89208 S   5.0   0.6   0:00.15 chrome                                                                                                                                                                                                                                    
      8 myuser  20   0  630596  51892  32908 S   0.7   0.3   0:04.14 node                                                                                                                                                                                                                                      
      1 myuser  20   0    2420    524    452 S   0.0   0.0   0:00.05 sh                                                                                                                                                                                                                                        
     19 myuser  20   0  707412  57724  35064 S   0.0   0.4   0:02.26 npm start                                                                                                                                                                                                                                 
     30 myuser  20   0    2420    580    512 S   0.0   0.0   0:00.00 sh                                                                                                                                                                                                                                        
     48 myuser  20   0  705296  53336  34512 S   0.0   0.3   0:01.71 npm run example                                                                                                                                                                                                                           
     59 myuser  20   0    2420    524    456 S   0.0   0.0   0:00.00 sh                                                                                                                                                                                                                                        
  24495 myuser  20   0 1124.7g 140500 116068 S   0.0   0.9   0:00.31 chrome                                                                                                                                                                                                                                    
  31812 myuser  20   0    4100   3376   2948 S   0.0   0.0   0:00.05 bash                                                                                                                                                                                                                                      
  31920 myuser  20   0    7012   3420   2848 R   0.0   0.0   0:00.03 top                                                                                                                                                                                                                                       
  34415 myuser  20   0 1124.8g 138368 114276 S   0.0   0.9   0:00.28 chrome 

有 8 个 chrome 进程,因为我同时执行 8 个请求。内存继续增加

节点.js docker puppeteer bluebird

评论


答: 暂无答案