单个嵌入式 Ignite 节点总是在启动时执行恢复,并且花费的时间太长
Single embedded Ignite node always performs recovery on startup and it takes too long
我正在一个概念验证应用程序中评估 Ignite,该应用程序将合理数量的数据加载到启用了持久性的单个嵌入式节点中。磁盘存储约为 20 GB,我已将 8 GB RAM(共 16 个可用)分配给内存缓存。
将这些初始数据加载到数据库后,我发现创业公司花费的时间太长而不实用,尤其是对于开发周期而言。总启动时间约为 12 分钟。查看日志,有两个步骤占了大部分时间:
i.i.p.c.p.GridCacheDatabaseSharedManager : Binary recovery performed in 127946 ms.
i.i.p.c.p.GridCacheDatabaseSharedManager : Logical recovery performed in 571725 ms.
我知道当我在调试器中按 "stop" 时,它会终止进程,Ignite 将没有机会正确清理。但是,在此 运行 之前,我让 Ignite 运行 通宵运行,以便允许它执行所有预期的检查点等。似乎无论我做什么,启动时间仍然很长。
问题:
- 这是预期/正常行为吗?
- 如果是这样,我怎样才能达到可接受的 code/build/run 周期?我认为超过五秒的启动会妨碍我们的开发人员。
- 另外,如果这是正常的,那么在生产环境中减少启动时间的策略是什么?这个测试让我担心重启会花费太长时间。我认为任何超过五分钟的事情都会让我们的 IT 运营人员和客户感到不舒服。
- 如果不正常,我做错了什么?
完整的日志文件对于 Stack Overflow 来说太大了,但在 pastebin 上可用。
我认为只有在您有足够的资源(例如 RAM 和 I/O)时才应该使用 Ignite 的持久性。它并没有真正针对资源受限的场景进行优化。
也许你可以在服务器上有一个集群,只连接客户端进行开发?这样你可以每天重启一次左右。
这听起来不正常。如果 Ignite 突然停止,则需要一些时间来重播预写日志以使持久性文件达到一致状态。但是,12 分钟听起来很可疑,尤其是如果使用 Ignite.stop.
这样的方法正常停止 Ignite
你是对的,启动时间不应该受到影响,只是因为你不能在 RAM 中缓存所有数据集。它会影响操作的性能,但不会影响 bootstrap 程序。
尝试 运行 在不同的机器或环境中运行您的应用。您的笔记本电脑或其磁盘可能有问题。尝试检查较小的数据大小或使用 Ignite.stop 轻轻停止 Ignite 以确保日志中没有报告预写日志或恢复活动。
我正在一个概念验证应用程序中评估 Ignite,该应用程序将合理数量的数据加载到启用了持久性的单个嵌入式节点中。磁盘存储约为 20 GB,我已将 8 GB RAM(共 16 个可用)分配给内存缓存。
将这些初始数据加载到数据库后,我发现创业公司花费的时间太长而不实用,尤其是对于开发周期而言。总启动时间约为 12 分钟。查看日志,有两个步骤占了大部分时间:
i.i.p.c.p.GridCacheDatabaseSharedManager : Binary recovery performed in 127946 ms.
i.i.p.c.p.GridCacheDatabaseSharedManager : Logical recovery performed in 571725 ms.
我知道当我在调试器中按 "stop" 时,它会终止进程,Ignite 将没有机会正确清理。但是,在此 运行 之前,我让 Ignite 运行 通宵运行,以便允许它执行所有预期的检查点等。似乎无论我做什么,启动时间仍然很长。
问题:
- 这是预期/正常行为吗?
- 如果是这样,我怎样才能达到可接受的 code/build/run 周期?我认为超过五秒的启动会妨碍我们的开发人员。
- 另外,如果这是正常的,那么在生产环境中减少启动时间的策略是什么?这个测试让我担心重启会花费太长时间。我认为任何超过五分钟的事情都会让我们的 IT 运营人员和客户感到不舒服。
- 如果不正常,我做错了什么?
完整的日志文件对于 Stack Overflow 来说太大了,但在 pastebin 上可用。
我认为只有在您有足够的资源(例如 RAM 和 I/O)时才应该使用 Ignite 的持久性。它并没有真正针对资源受限的场景进行优化。
也许你可以在服务器上有一个集群,只连接客户端进行开发?这样你可以每天重启一次左右。
这听起来不正常。如果 Ignite 突然停止,则需要一些时间来重播预写日志以使持久性文件达到一致状态。但是,12 分钟听起来很可疑,尤其是如果使用 Ignite.stop.
这样的方法正常停止 Ignite你是对的,启动时间不应该受到影响,只是因为你不能在 RAM 中缓存所有数据集。它会影响操作的性能,但不会影响 bootstrap 程序。
尝试 运行 在不同的机器或环境中运行您的应用。您的笔记本电脑或其磁盘可能有问题。尝试检查较小的数据大小或使用 Ignite.stop 轻轻停止 Ignite 以确保日志中没有报告预写日志或恢复活动。