社区首页 >问答首页 >最大IPC消息大小超过

最大IPC消息大小超过
EN

Stack Overflow用户
提问于 2018-10-09 01:26:11
回答 3查看 2K关注 0票数 4

目前,我正在开发运行在web浏览器上的工具。

在这个项目中,我使用的是IndexedDB和Dexie.js ver2.x。

在Google上,我提到了错误“最大IPC消息大小超过”。很可能,这是由于将如此庞大的数据放入IndexedDB而造成的。我的临时实现是通过JSON.stringify将数组转换为字符串,而我曾经能够解决这个问题。然而,这个问题又发生了。

  • 在我的应用程序中,定义了一个名为Project的聚合。
  • 每个Project有多达500个Input text
  • 每个Input text有一个字符串,其长度高达50k。
  • 而且,每个Project都有Analysis,但它只包含分析参数。
  • 每个Analysis都有大量的Result
  • 每个Result包含的长度为20k。
  • Input textResult分别用IndexedDB的getAll()法、projectId法或analysisId法进行滤波。

我的问题是..。

  1. 如何避免此错误?
  2. 我想拯救存储在IndexedDB的数据。我知道数据存储在本地文件系统中的位置。如果可能的话,怎么做?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-11 04:42:23

如果您查看在Chrome实现(如database.cc )中导致此错误的原因,当消息大小太大时就会发生错误。在这里,消息大小基本上是指由于某种处理而从C++ (浏览器二进制文件)发送到Javascript的数据量。

为了避免发送太多的数据,您可以做一些事情:

  • 确保永远不要对大量数据调用getAll
  • 在对潜在的大量数据调用getAll时使用限制
  • 使用openCursor而不是getAll
  • 存储较小的对象

我认为你最好的选择是尝试改用openCursor。这将每次检索您的项目(每个请求)。这样,您将避免遇到此错误。使用游标会损失一点点速度,但会获得可伸缩性。

要像getAll那样使用游标来工作,它很简单。您所需要做的就是首先声明一个空数组,然后启动游标,并在每次向数组中添加游标项时进行迭代。在迭代结束时,您基本上是从一个时间开始组装的,这些数组的结果与调用getAll的结果相同。

票数 8
EN

Stack Overflow用户

发布于 2019-10-22 22:52:25

我找不到一种像游标一样的方式来查询Dexie (可能看得不够仔细),但是我想继续使用Dexie作为我的抽象层。

我既需要检索所有记录,也需要基于ID检索子集(与您相同),我想出了以下内容,解决了我们的问题:

代码语言:javascript
代码运行次数:0
复制
/**
 * Retrieve all of Dexie collection
 *
 * We can't just call Collection.toArray() because once the result is large
 * enough, we'll get "Maximum IPC message size exceeded" error. This is a
 * memory-friendly implementation. Although maybe a bit slow due to a page
 * size of one.
 */
function retrieveDexieCollection(collection) {
  return new Promise(async (resolve, reject) => {
    try {
      const result = []
      await collection.each(r => {
        result.push(r)
      })
      return resolve(result)
    } catch (err) {
      return reject(err)
    }
  })
}

// then later, use our function
const projectIds = [1,2,3]
const records = await retrieveDexieCollection(db
  .whateverYourTableIsCalled
  .where('projectId')
  .anyOf(projectIds))

如果您需要在执行过程中处理记录(我这样做了),您可以添加一个mappingFunction参数,并在将其添加到数组之前对每个元素调用该参数。

该函数非常灵活,因为您可以传递任何Dexie集合;整个表或任意查询的结果。

票数 1
EN

Stack Overflow用户

发布于 2019-10-17 06:57:30

如果在一些大型数据集中使用Dexie的toArray()方法,请尝试使用offset(number)limit(number)限制记录的数量,以批量获取数据

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52717593

复制
相关文章
MySQL binlog日志大小超过限定范围
my.cnf中有两个参数设置: expire_logs_days = 7 #binlog保留时间7天 max_binlog_size = 1G #binlog大小 问题描述:
MySQL轻松学
2018/03/09
4.7K0
MySQL binlog日志大小超过限定范围
SpringBoot 上传文件报错,文件大小超过限制
刚开始看到是请求直接断开,后台也没有日志,猜测是 Nginx 的问题,看了下配置文件,果然是。Nginx 当前设置为 8M,
Li_XiaoJin
2022/06/10
2.5K0
System|IPC|Rethinking IPC
IPC,进程间通信,是打破地址空间隔离的必经之路。本文按照个人理解对于IPC进行了一些分类与整理。
朝闻君
2021/11/22
7840
System|IPC|Rethinking IPC
通过shell脚本自动清理超过指定大小的文件
由于线上业务用的squid,根据经验值如果长时间运行则缓存目录下的swap.state会慢慢变大,一旦超过60M,squid的性能就会急剧下降,因此需要定时去清理大于60M的swap.state文件。由此引出需求,查找cache目录下的所有大于60M的swap.state文件并清除,即: 1)查找cache目录下的所有swap.state文件 2)判断是否大于60M 3)大于60M则清空
洗尽了浮华
2018/10/11
3.2K0
mysql mediumtext 最大_mysql – TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT最大存储大小
上升到@ Ankan-Zerob的挑战,这是我对每个文本类型中可以存储的最大长度的估计:
全栈程序员站长
2022/09/06
2K0
WordPress最大上传文件大小限制修改
将数字更改为所需的值。最大执行时间和最大输入时间值以秒为单位,如果您的互联网连接缓慢,则可能需要进一步增加。
用户7491502
2021/06/20
4.7K0
如何修改PHP最大文件上传大小限制
找到PHP组件目录下的PHP.ini文件,使用记事本打开,查找 post_max_size(允许POST数据大小) 值修改成10M或更大,查找 upload_max_filesize(允许上传文件大小) 值,可以修改跟前面的一样大小,具体大小根据自己要上传的文件大小来决定。
用户9042463
2021/09/29
7.2K0
tomcat编译超过64k大小的jsp文件报错原因
今天遇到一个问题,首先是在tomcat中间件上跑的web项目,一个jsp文件,因为代码行数实在是太多了,更新了几个版本之后编译报错了,页面打开都是报500的错误,500的报错,知道http协议返回码的都知道,这是服务端的报错。
SmileNicky
2019/01/17
1.2K0
UNIX IPC
管道一般为有亲缘关系进程提供单路数据流, 通过pipe(int fd[2])创建, 返回两个文件描述符, fd[0] 用于读,fd[1]用于写。 通过 read 和 write 函数进行 操作。
orientlu
2018/09/13
1.4K0
UNIX IPC
IPC$横向移动
IPC$(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可建立安全通道,并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
Al1ex
2022/12/22
5.1K0
IPC$横向移动
android-ipc介绍
按照操作系统中的描述 线程是CPU调度的最小单元 同时线程是一种有限的系统资源 进程一般指一个执行单元 在PC和移动设备上指一个应用 一个进程可以包含多个线程 因此进程和线程是包含与被包含的关系 最简单的情况下一个进程中可以只有一个线程即主线程 在Android里面主线程也叫UI线程 在UI线程里才能操作界面元素
tea9
2022/07/16
4350
android-ipc介绍
进程间通信(IPC)
前几天面试官问你知道IPC麽?平时没接触这个,面试回来之后,恶补其中的知识。进程间存在很多通信方式,本文将介绍几种常用的。
jiewuyou
2022/09/29
7300
Qt中关闭窗口最大化按钮,固定大小
作者:admin,发布日期:2017-02-20 阅读:164;评论:0 效果 image.png 代码: w.setWindowFlags(Qt::WindowCloseButtonHint|Qt::WindowMinimizeButtonHint); 固定大小只要修改以下两条属性即可 image.png
繁花云
2018/07/31
2.4K0
Qt中关闭窗口最大化按钮,固定大小
Oracle Group By 分组后取最大/小字段值
查询报告列表,并要关联出该报告最后修改记录的用户和最后修改记录的时间,每条报告对应修改记录会有多条,是典型的1对多结构,对修改记录统计只显示一条可以使用报告ID进行GROUP BY分组,对修改时间可以使用MAX函数来取最后的修改时间,但是修改用户ID,使用MAX函数可能会乱。这时需要使用 ORACLE 的 KEEP 函数了:
I Teach You 我教你
2023/07/18
9540
Oracle Group By 分组后取最大/小字段值
IPC$学习笔记
IPC(Internet Process Connection) 共享"命名管道"的资源,是为了实现进程间通信而开发的命名管道。IPC可以通过验证用户名和密码获取相应权限。通过IPC、D、E……)和系统目录共享(Admin)。
黑白天安全
2020/04/14
4.2K0
IPC$学习笔记
横向移动-IPC
IPC(共享命名管道资源)其实就是为了实现进程间通信而开放的命名管道;它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。
亿人安全
2023/02/28
1.9K0
横向移动-IPC
Asp.net支持的最大上传文件大小
Asp.net的默认的最大可以上载的文件是4M,可以在web.config中配置.
Java架构师必看
2021/03/22
2.4K0
今日头条超过腾讯新闻?或成为国内最大资讯平台
继BAT之后,TMD三个小巨头崛起了,其中这个T就指的是今日头条。通过几年的发展,今日头条已经成为国内最大的资讯平台之一。原本,今日头条落后于腾讯新闻。毕竟,腾讯新闻有微信每天的推送,每日都可以触达亿万用户。最近,根据极光大数据发布的《2018年Q1移动互联网行业数据研究报告》,今日头条以24.2%的渗透率位列第一,以微弱优势超过了腾讯新闻。在我的记忆中,这好像也是腾讯新闻首次被别的资讯APP超越。并且,根据极光大数据的报告显示:今日头条的DAU已经过亿,成为了名副其实的国民级应用。这下马化腾应该不高兴了吧!
光荣与梦想1987
2018/09/12
4K0
关于zookeeper写入数据超过1M大小的踩坑记
某天晚上集群的一个任务提交一直失败,经过排查日志,发现是zk客户端写入的数据包过大,导致报错。我们来看下,这中间发生了什么。
我是攻城师
2019/09/30
14.7K1
点击加载更多

相似问题

已超过传入消息的最大消息大小配额(65536

895

已超过传入消息的最大消息大小配额(65536

48

已超过传入消息的最大消息大小配额(65536)

21

已超过传入消息的最大消息大小配额异常

10

Android IPC最大事务大小?

29
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文