上传大量文件时节点脚本导致系统冻结

2024-01-28

我有一个脚本,它是一个更大的电子程序的一部分。该脚本是一个循环,它从应用程序的临时目录中读取文件,然后将所有文件上传到 S3。这对于小型文件集效果很好,但对于较大的文件集,它会导致计算机冻结并重新启动并导致系统崩溃(Macbook pro 2018)。我测试过的一个大集合包含大约 600 个文件(每个文件都很小,低于 1 mb)。

我无法从脚本本身得到任何错误,因此调试起来有点困难。我猜这必须与很多fs.lstatSync或对许多人put一下子全部活跃起来。

我想要一些有关如何调试此问题的建议(很难,因为计算机冻结了)或有关打开多少个的建议fs.lstatSync and put这是稳定的。

const upload = (): void => {
  const fileUploadPromises = [];
  const userDataPath = remote.app.getPath('temp');

  let i = 0;

  let bytes = 0;
  let totalBytes = 0;
  let lastUpdate = 0;

  for (const file of filenames) {
    const filePath = `${userDataPath}chunks/${file}.ts`;
    const stats = fs.lstatSync(filePath);
    const { size } = stats;
    const createdFile = createFileData.createFile[i];

    totalBytes = totalBytes + size;

    fileUploadPromises.push(
      put({
        url: createdFile.presignedPutUrl,
        body: fs
          .createReadStream(filePath)
          .on('data', c => {
            bytes += c.length;

            const stepSize = totalBytes / 100;

            if (bytes - lastUpdate > stepSize) {
              setProgress(bytes / totalBytes);
              lastUpdate = bytes;
            }
          })
          .on('error', e => {
            console.error(e); // eslint-disable-line
          }),
        headers: {
          'Content-length': size,
        }
      }).catch(e => {
        console.error(e); // eslint-disable-line
      })
    );

    i = i + 1;
  }
};

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上传大量文件时节点脚本导致系统冻结 的相关文章

随机推荐

  • 执行存储过程并返回结果集

    我是一个完整的 VBScript 新手 我正在尝试执行存储过程并读取结果集 我使用在线文章尝试了多种不同的方法 但没有任何效果 我很困惑 数据库是 SQL Server 2008 R2 应用程序是现成的 ERP 系统 但我可以向其中添加自己
  • 了解 Javascript D3 可视化四叉树

    我正在尝试使用和理解D3可视化库 http mbostock github com d3 http mbostock github com d3 我正在看他们的原力导向代码 https github com mbostock d3 blob
  • ViewPager setCurrentItem 冻结 UI 线程

    我正在使用 Android 支持 v13 中的 ViewPager 并且我想使用以下命令滚动到特定项目setCurrentItem int 但是当我尝试滚动超过 2 页时 应用程序会冻结 几秒钟后系统会显示 ANR 窗口 我尝试使用增加屏幕
  • IE11 中的弹性项目包装被破坏

    我正在尝试使用新的 CSS3 Flexbox 功能构建表单布局 目标是当您更改字段集中的元素数量 更改字体大小或更改视图大小时 字段集的元素可以正确排列 表单布局应该适用于所有现代浏览器 Chrome 35 Firefox 29 和IE 1
  • 使用 iOS 定义的本地化在导航栏上获取一个显示“后退”的后退按钮

    我有一个UINavigationBar有两个不同的屏幕 在两个屏幕上 导航栏具有相同的标题 所以后退按钮应该只是Back作为文本而不是导航栏的标题 如果我将父 ViewController 标题设置为nil我有一个带有文本的后退按钮Back
  • Ember 将服务注入 Ember 实用程序

    我知道 Ember 有一个记录器 但我想创建自己的记录器以用于学习目的 我有一个名为 logger 的服务 我希望能够在任何地方使用该服务 我可以毫无问题地将此服务注入到组件 控制器等中 我无法弄清楚如何将此服务注入到我创建的实用程序中 而
  • SQL 性能 - 插入和引发异常或检查是否存在更好?

    我正在考虑对代码中特别重要的部分进行优化 它的任务是将统计数据插入表中 该数据受到其他程序的大量攻击 否则我会考虑使用 SQL 批量插入等 所以我的问题是 尝试插入一些数据是否可以 知道它可能 不经常 为重复行抛出 SqlException
  • SAP 商务云 (Hybris) 可以导出内容吗?

    我想验证 SAP commerce cloud Hybris 是否能够自动导出其内容 DynamicYield 希望使用它的自动摄取内容提要变异饲料 https support dynamicyield com hc en us artic
  • 具有多个(两个)通配符(用斜杠分隔)的 Servlet 映射

    我正在尝试映射一个与两者都匹配的 servlet 模式 server abcDef 1432124 adfadfasdfa and server abcDef abcd 12345 值 1432124 和 abcd 不是固定的 可以是多个值
  • getElementsByTagName ("div").length 对于任何网页都返回零

    我正在尝试开发一个 Firefox 扩展 以下代码 var divList document getElementsByTagName div Components utils reportError num of divs divList
  • 滑动行或单击编辑按钮时更改 UITableViewCell 中默认红色删除按钮的颜色

    我想改变减号按钮和删除按钮的颜色UITableViewCell当单击编辑按钮或滑动时UITableView行 到目前为止我已经实现了这段代码 IBAction doEdit id sender self keyWordsTable setE
  • jquery datatables:columnFilter() 不是函数错误

    我正在使用带有自定义服务器端过滤 搜索和排序的数据表 为什么 columnFilter 返回错误 TypeError DataTable columnFilter 不是函数 这是我使用columnFilter的方式 var table it
  • 未捕获的语法错误:无法在“元素”上设置“innerHTML”属性:提供的标记是无效的 XML

    我正在尝试将日期时间选择器放入我的 Rails 4 应用程序中 我决定尝试一下这个 https github com Eonasdan bootstrap datetimepicker https github com Eonasdan b
  • 背景图像未加载到设备上

    我有这段代码 将图像放置在背景中并应用模糊效果 let effect UIBlurEffect style Dark override func viewDidLoad let backgroundView UIView frame vie
  • MySQL 许可和 GPL [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案
  • 在算术运算中将 NaN 视为零?

    这是我正在努力解决的问题的一个简单例子 In 1 import pandas as pd In 2 import numpy as np In 3 test pd DataFrame np random randn 4 4 columns
  • 类的实例方法与模块方法

    我正在阅读 Ruby 模块方法的解释以及它们与类的实例方法有何不同 这是我正在阅读的解释 请记住 与实例方法不同 模块方法需要 在模块本身上定义 您如何访问该模块 记起 在模块定义中 self 指的是模块 定义的 因此 您需要使用 self
  • 如何使用 PHP 获取 MongoID 的字符串值?

    完成插入后 我想使用 json encode 将对象传递给客户端 问题是 id 值不包括在内 widget array text gt Some text this gt mongo gt db gt insert widget If I
  • imagemagick - 查找透明png轮廓的坐标(不是边框)

    虽然视觉轮廓很容易完成 但 imagemagick 是否可以输出透明图像轮廓的坐标 请注意 通过轮廓 我不仅仅指边界框边框 而是指任意形状的透明图像几何体周围的实际轮廓 假设您从这张具有透明背景的图像开始 您可以提取透明度并找到边缘 如下所
  • 上传大量文件时节点脚本导致系统冻结

    我有一个脚本 它是一个更大的电子程序的一部分 该脚本是一个循环 它从应用程序的临时目录中读取文件 然后将所有文件上传到 S3 这对于小型文件集效果很好 但对于较大的文件集 它会导致计算机冻结并重新启动并导致系统崩溃 Macbook pro