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

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(使用前将#替换为@)

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

  • 无法连接到 Node.js 上的 MySQL 数据库

    我仍然不明白为什么在尝试连接到 Node js 上的 MYSQL Server 时仍然收到此错误消息 ERROR Error ER ACCESS DENIED ERROR Access denied for user root localh
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • 如何在node.js中存根process.env?

    我想存根process env FOO with bar var sinon require sinon var stub sinon stub process env FOO bar 我很困惑 我阅读了文档 但仍然不明白 sinonjs
  • Node js mongodb 删除错误“key $lte 不得以 '$' 开头”

    db collection session remove timestamp lte a function err docs console log err console log docs Version mongodb is 2 6 5
  • 如果没有“new”,则无法调用类构造函数

    感谢这个问题已经被问过几次了 但是我遇到的几乎所有情况都是有人试图扩展非本地类的情况 我的情况有所不同 我有一个非常简单的基类 名为CObject如下 export class CObject extends BaseObject cons
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • Jwt 签名和前端登录身份验证

    我有这个特殊的 jwt sign 函数 Backend const token jwt sign id user id process env TOKEN SECRET expiresIn 1m res header auth token
  • 对于实时网站使用 Node.js 或 Ringojs 安全吗?

    正如标题中所述 我想知道使用实际的 omg 平台 即 Node js 和 Ringo js 的实际版本 之一来开发网站是否安全 另外 我想知道他们是否支持cookie sessions以及他们如何处理多字段帖子 PHP中的fieldname
  • 如何使用 Create-React-App 节点服务器定义 MIME 类型?

    我正在尝试处理这个 WebAssembly 注释 注意 要运行instantiateStreaming and compileStreaming 您需要您的网络服务器来提供 wasm 文件application wasmMIME 类型 ht
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • 护照本地猫鼬帐户注册的附加字段?

    我将 Passport local mongoose 与 Node js Express js MongoDB 一起用于 Web 应用程序 我想使用用户名字段 密码字段 公司名称字段和电话号码字段 所有字段 来注册用户作为字符串 但是 我只
  • Node JS - 如何检测用户语言

    我正在尝试在纯 Node js 中检查用户语言 而不使用 npm 的任何扩展 我使用了进程和全局命令 有很多规范但我找不到系统语言 这是获取默认区域设置的独立于操作系统 节点 浏览器的方法 let locale Intl DateTimeF
  • 如何在Windows服务器上将node.js文件作为后台进程运行?

    我正在创建一个 node js 项目并将其上传到我的 Windows 服务器 以为移动应用程序提供 API 服务 当我打开命令提示符并键入 node app js 它运行正常 但是当我关闭命令提示符时 我的 Node js 服务器停止运行
  • 节点无法抓取某些页面

    我不知道这是否与冷融合页面有关 但我无法刮掉这些 cfm pages 在目录中的命令行中request run node gt var request require request node gt var url http linguis
  • Angular-cli AOT 构建失败,并显示“致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足”

    我正在尝试使用 AOT 构建我的 angular cli 项目 ng build aot 但它因错误而失败 致命错误 CALL AND RETRY LAST 分配失败 JavaScript 堆内存不足 如果我用 prod flag 任何想法
  • Cosmos DB Mongo API 如何管理“请求率很大”情况

    我有以下代码 async function bulkInsert db collectionName documents try const cosmosResults await db collection collectionName
  • 如何使用Create React App安装React

    嗨 我对反应真的很陌生 我不知道如何实际安装它 也不知道我需要做什么才能在其中编写代码 我下载了node js并且安装了v12 18 3以及NPM 6 14 6 但是每次我尝试在许多网站上提到的create react app安装方法中输入
  • 下载中带有文件名的 NodeJS sendFile

    我尝试使用以下代码将文件发送给客户端 router get get myfile function req res next res sendFile other file name dat 它工作正常 但当用户从以下网址下载此文件时我需要
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod

随机推荐

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

    我是一个完整的 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