问题标签 [tombstone]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android的墓碑文件中的地址是否每次都与.so中的地址完全匹配(即使在重新启动后)?
当系统崩溃时,它会在 /data/tombstone 中留下一个 tombstone 文件。我找到了一堆地址如下。
让我们假设有一个由 address 引起的麻烦0000e0ba /system/lib/bluez-plugin/audio.so
。
我使用'add2line'来查看哪一行让它变得如此糟糕。
它显示了造成麻烦的代码中的特定行。
这是问题。我真的不明白 PC 在墓碑中的地址是如何在每次运行时直接与其 .so 的地址匹配的。显然这是在系统死机后(事后)调试,这意味着手机的电源已经关闭。
我是否应该认为动态库(.so)即使在重新启动后也总是加载到 RAM 中的相同地址中?
cassandra - Cassandra 是否仅在集群密钥中插入不同的生成墓碑
Cassandra 对更新和集群密钥的处理如何交互?
- Cassandra 在写入后从不真正更新记录,它使用墓碑将旧版本标记为已删除,并同时记录旧版本和新版本,直到旧版本最终被内务处理过程删除:一种垃圾收集形式。
- 集群键是使用一些魔术来实现的,该魔术将数据记录在只有一个分区键的“真实”记录中。
让我感到震惊的是,这两个功能可能相互作用不好,导致产生过多的垃圾。
考虑这个模式:
执行以下插入后:
是否有一个带有墓碑标记的记录保存(1, 1, "text-1")
数据和一个新记录保存数据(1, 1, "text-1")
和(1, 2, "text-2")
数据?也就是说,第二次插入是否被实现为对分区键 ( p
) 为 1 的“真实”记录的更新?
android - 杀死android进程时如何保证生成墓碑文件
我必须模拟现有的android进程将被杀死并因此立即生成墓碑文件的情况。
我使用以下命令序列来实现这一点:
不幸的是,“-6”信号(以及任何其他可能的信号)并不能保证会生成墓碑这一事实。
关于如何在不修改应用程序的情况下保证生成墓碑的任何想法?
谢谢!
titan - 无法使用 (STCS) SizeTieredCompactionStrategy 摆脱 cassandra 2.1.8 中的墓碑
我有一个 3 节点 cassandra (2.1.8) 集群,我正在使用 titan db (v0.5.4) 在其上运行应用程序。数据量非常小(<20 MB),但由于我的用例需要不时删除,我已经遇到了墓碑问题。我无法摆脱已经创建的墓碑。我尝试的解决方案是:
- 将指定graphindex表的 gc_grace降低到 60s
- 运行 nodetool 刷新
- 运行 nodetool 修复
- 对于 titan.graphindex 表设置压缩选项为 {'class': 'SizeTieredCompactionStrategy', 'unchecked_tombstone_compaction': 'true', 'tombstone_compaction_interval': '0', 'tombstone_threshold': '0.1'};
- 从 jmx 运行 forceUserDefinedCompaction。
结果统计数据有所下降,但平均每片墓碑数和每片最大墓碑数仍然不令人满意:
是否有任何选项可以删除所有墓碑?提前感谢您的任何建议。
cassandra - 为什么 upsert 不在 Cassandra 中创建墓碑?
根据关于 Tombstone的问题,为什么 upserts 不创建墓碑?根据 datastax 文档,如何更新数据?对于每个 upsert,cassandra 认为是删除后插入,因为插入的新时间戳会覆盖旧时间戳。旧的时间戳数据必须标记为删除,这与墓碑有关。
为什么我们有自相矛盾的说法?或者我在这里错过了什么?
用例:在 Cassandra 中使用唯一键 (uuid) 插入数据,并且此数据中的某些列经常更新。您推荐哪种方法?
- 在插入查询中插入具有新列值的相同数据。
- 在更新查询中使用新列值根据给定 uuid 更新现有记录。
哪种方法创建或不创建墓碑?Cassandra 如何处理这两个查询?
cassandra - 除了 SSTables 之外,Cassandra 还使用了哪些墓碑?
Memtables 和提交日志是否有用于标记已删除数据的 Tombstone?Memtables中删除的数据在flush数据前如何标记?
cassandra - 是否可以避免 Cassandra 出现墓碑问题?
我正在为使用 Cassandra 作为数据库系统的 CMS 编写代码。
CMS 的优势之一是使用后端计算机预先计算各种事物,该后端计算机针对 CMS 中更改的数据永久运行。
例如,CMS 告诉列表系统页面已创建或更改。列表系统将该信息保存在名为 的表中list
。该信息只是一个衬里,它告诉我必须处理哪个页面。
偶尔(通常在简单的页面编辑后不到一秒钟),该列表后端系统会唤醒并看到某个页面已更改并通过更新所有包含(或不再包含)的列表开始处理它该页面作为一个元素。这允许前端立即知道列表中的元素数量并非常快速地读取列表,而无需在需要列表时运行复杂的查询(与许多 CMS 使用 SQL 所做的相反......)
实际上,我使用该list
表作为 TODO 列表。我必须处理的一组页面。因此,前端将页面引用添加到该列表,而后端在完成后将其删除。list
结果,我可以在表中得到大量的墓碑。现实世界的影响:我有墓碑故障,系统开始随机出现故障。一旦列表停止工作,系统中的许多其他东西就会停止工作,网站就会变得无法使用。
我减少了 Cassandra 处理该特定表(以及其他一些表)中墓碑的时间,但我想知道我是否按预期使用 Cassandra。在这种环境中是否有更好的方法来处理这种 TODO 列表?
附带说明:TODO 列表可以在各种不同的后端计算机上处理。在小型系统上,您可能只有一个后端针对列表数据运行,而在拥有数千名用户的大型系统上,您不太可能有 2 或 3 个后端来处理列表。因此,在 Cassandra 中存储数据对于在计算机之间快速共享数据非常实用。
cassandra - 为什么我在卡桑德拉看到这么多墓碑?
当我进行表修复时,我看到很多警告,如下所示:
但是我没有删除任何东西,也没有设置 TTL,所以什么都没有被删除。为什么有这么多墓碑?数据大小约为200G,但我插入了一些带有NULL的单元格。
android - Android Segmentation fault Tombstone debug 6.0.1, 6.0.0
将不胜感激采取尝试和调试的步骤。该错误仅随机发生在 android 6.0.0 和 android 6.0.1 上,因此我唯一的希望是尝试调试该应用程序。我的代码完全用原生 Android Java 编写。
05-10 10:31:15.471 15933-15933/com.ragemods A/libc:致命信号 11 (SIGSEGV),代码 1,tid 15933 (com.ragemods) 中的故障地址 0x0
这是随之而来的墓碑:
https://www.dropbox.com/s/svwhdzub70klgpb/tombstone_00?dl=0
谢谢你的帮助。
另外,如果这有帮助,这里是我的条目堆栈跟踪:
database - Apache Cassandra:需要显式读/写一致性?
我的公司正在使用 Cassandra (2.1.8),在 debian 服务器上运行。
如果不对我的查询/preparedStatements 设置一致性,我有时会从"SELECT * FROM table_name WHERE key = ?"
. 添加后:
我每次都能得到答案。但是来自下面的文章: 一致性级别的读/写策略
如果你不关心一致性,那么这个讨论是没有意义的;以任何一致性级别读/写,并让 Cassandra 的异步复制和反熵功能完成它们的工作。也就是说,尽管您的目标是最小化网络流量/成本,但如果您的工作负载主要是读取,那么在 CL QUORUM 或 ALL 上进行写入的额外成本实际上可能不会那么多。
据说如果我不关心一致性,我的一致性水平并不重要。而我没有。如果数据是几小时或几天前的数据,对我来说并不重要。但我确实关心每次都获取数据。
我需要知道的是:我是否也需要在我的 Writes 上设置一个一致性级别,以确保它们实际被写入,并且如果我以前写过任何东西,我的 Read 将始终检索一个值。
考虑到上述标准,一致性水平可能是多少?