google-cloud-platform - Apache Beam 转换中对数据存储的同步调用的高挂墙时间
问题描述
我一直在调查一个运行速度非常慢的 Beam 作业(使用 GCP 数据流)。使用 GCP 分析器,我能够确定大部分时间都花在等待使用标准 Java 数据存储库 ( https://cloud.google.com/datastore/docs/ ) 调用数据存储(在梁转换内)参考/图书馆)。我写了一个测试作业,它只是在光束变换中进行简单的数据存储读取,并看到了相同的结果。这是分析器的屏幕截图
您可以在屏幕截图中看到,运行这些简单的 Datastore 查询平均需要大约 19 秒。我知道使用梁数据存储库来并行化/批处理这些对数据存储的调用是最佳实践,但对于我们的用例,我们需要在梁转换中进行这些顺序同步读取。无论如何,我想知道是否有人对为什么这些电话可能会花这么长时间有任何见解?您可以在屏幕截图中看到,大部分时间都花在等待 SocketInputStream.socketRead0() 方法上,这表明可能存在网络或远程服务器延迟。
这是我编写的运行上述配置文件的测试作业 DoFn 代码的屏幕截图:
解决方案
推荐阅读
- ef-core-2.1 - EFDesigner Load Nuget Packages 对象引用未设置为对象的实例
- python - 如何获得单选按钮输入的值?
- angular - Angular 应用程序未通过 Docker 加载
- android - 如何隐藏包含的合并布局 - Kotlin null 异常
- c# - 绑定到属性的属性
- kepler.gl - 如何使用新的 H3 层
- c++ - 具有基于范围的循环遍历 equal_range 的 C++ 多图:错误消息
- node.js - oas-raml-converter: env: 无法执行 'node --harmony': 没有这样的文件或目录
- java - 访问 Web 服务器之外的文件
- docker - 在此目录或任何 docker compose 中找不到合适的配置文件(解决方案中未添加 docker-compose 部分)