云数据管理#
在云端管理数据时有两个关注点:
- 内存使用:处理大量数据的复杂工作流可能超过 n8n 的内存限制。如果发生这种情况,实例可能会崩溃并变得无法访问。
- 数据存储:根据您的执行设置和数量,您的 n8n 数据库可能会增长并耗尽存储空间。
为了避免这些问题,n8n 建议您在构建工作流时考虑内存效率,并且不要保存不必要的数据。
每个云计划的内存限制#
当前计划:
- 试用版:320MiB RAM,10 毫核 CPU 可突发
- 入门版:320MiB RAM,10 毫核 CPU 可突发
- Pro-1(10k 执行):640MiB RAM,20 毫核 CPU 可突发
- Pro-2(50k 执行):1280MiB RAM,80 毫核 CPU 可突发
- 企业版:4096MiB RAM,80 毫核 CPU 可突发
旧版计划:
- Start:320MiB RAM,10 毫核 CPU 可突发
- Power:1280MiB RAM,80 毫核 CPU 可突发
n8n 为每个实例提供最多 100GB 的数据存储。
如何减少工作流中的内存消耗#
您构建工作流的方式会影响它们在执行时消耗多少数据。虽然这些指导原则并不适用于所有情况,但它们提供了避免超过实例内存的最佳实践基线。
- 将处理的数据分割成更小的块。例如,不要每次执行获取 10,000 行,而是每次执行处理 200 行。
- 尽可能避免使用代码节点。
- 处理大量数据时避免手动执行。
- 将工作流分割成子工作流,并确保每个子工作流向其父工作流返回有限的数据量。
分割工作流起初可能看起来有悖常理,因为它通常需要添加至少两个节点:循环遍历项目节点将项目分割成更小的批次,以及执行工作流节点来启动子工作流。
但是,只要您的子工作流为每个批次执行繁重的工作,然后只向主工作流返回一小部分结果集,这就会减少内存消耗。这是因为子工作流只在内存中保存当前批次的数据,之后内存再次释放。
请注意,n8n 本身运行也会消耗内存。平均而言,软件本身使用约 180MiB RAM。
与 UI 的交互也会消耗内存。在执行繁重任务时使用工作流 UI 也可能会使内存容量超过限制。
How to manage execution data on Cloud 如何在云端管理执行数据#
执行数据包括节点数据、参数、变量、执行上下文和二进制数据引用。它是基于文本的。
二进制数据是 n8n 无法表示为纯文本的非文本数据。这包括文件和媒体,如图像、文档、音频文件和视频。它比文本数据大得多。
如果工作流消耗大量数据并且已经过了测试阶段,停止保存成功的执行是一个好选择。
您可以通过两种方式控制 n8n 在数据库中存储多少执行数据:
在管理面板中:
- 从您的工作区或编辑器,导航到 Admin Panel 管理面板。
- 选择 Manage 管理。
- 在 Executions to Save 要保存的执行中取消选择您不想记录的执行。
在您的工作流设置中:
- 选择 Options 选项
菜单。 - 选择 Settings 设置。n8n 打开 Workflow settings 工作流设置模态框。
- 将 Save successful production executions 保存成功的生产执行更改为 Do not save 不保存。
Cloud data pruning and out of memory incident prevention 云数据清理和内存不足事件预防#
Automatic data pruning 自动数据清理#
n8n 会在一定时间后或一旦达到最大存储限制(以先到者为准)自动清理执行日志。清理始终从最旧到最新进行,限制取决于您的云计划:
- Start 和 Starter 计划: 最多保存 2500 次执行,执行日志保留 7 天;
- Pro 计划: 最多保存 25000 次执行,执行日志保留 30 天;
- Enterprise 企业计划: 最多保存 50000 次执行,执行日志保留时间无限制。
Manual data pruning 手动数据清理#
尽管有自动清理措施,较重的执行和使用场景仍可能超过数据库容量。在这种情况下,n8n 将手动清理数据以保护实例稳定性。
- 如果实例磁盘容量达到 85%,警报系统会警告 n8n。
- n8n 清理执行数据。n8n 通过运行实例备份(工作流、用户、凭据和执行数据)并在不包含执行数据的情况下恢复它来完成此操作。
由于此过程中的人工步骤,警报系统并不完美。如果在下班后触发警告或数据消耗率很高,可能没有时间在剩余磁盘空间填满之前清理数据。