【发布时间】:2020-08-19 06:37:59
【问题描述】:
只要未压缩数据的大小超过缓存,就会在 MongoDB 中获得一致的校验和错误并崩溃。
一些信息:
计算机:(独立 mongodb)
处理器 AMD 3600X
内存 32*4 = 128GB
存储 2TB SSD
方法板 B450M系统:
Linux 5.4.0-42-generic #46~18.04.1-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
MongoDB data size:
Uncompressed data size 42GB (zstd)
Compressed data size 12GB
Index size 1.6GB
Average object size 1.4KB
我的问题是什么可能导致这次崩溃。目前我知道的是:
-如果我将 cacheSizeGB 设置为 32GB(小于 42GB,即未压缩的数据大小), mongodb 几乎每天都会因校验和错误而崩溃。崩溃多发生在 mongodump 期间,有时在更新数据时发生。
-但是如果我将 cacheSizeGB 设置为 100GB(超过 42GB),则不会发生崩溃。
附加信息:
- 所有对象每天更新并每天运行 mongodump 进行备份。
- 系统内存缓冲区/高速缓存随时间增长,直到所有可用内存都用完。
- 收到校验和错误后,我将运行修复命令。
错误信息:
2020-08-07T10:51:39.094+0800 E STORAGE [conn399] WiredTiger error (0) [1596768699:94163][45915:0x7f32835f7700], file:collection-22--9089965868171986819.wt, WT_CURSOR.search: __wt_block_read_off, 274: collection-22--9089965868171986819.wt: read checksum error for 28672B block at offset 6685696000: calculated block checksum doesn't match expected checksum Raw: [1596768699:94163][45915:0x7f32835f7700], file:collection-22--9089965868171986819.wt, WT_CURSOR.search: __wt_block_read_off, 274: collection-22--9089965868171986819.wt: read checksum error for 28672B block at offset 6685696000: calculated block checksum doesn't match expected checksum
2020-08-07T10:51:39.094+0800 E STORAGE [conn399] WiredTiger error (0) [1596768699:94321][45915:0x7f32835f7700], file:collection-22--9089965868171986819.wt, WT_CURSOR.search: __wt_bm_corrupt_dump, 135: {6685696000, 28672, 0xdae2251d}: (chunk 1 of 28): 00 00 00 00 00 00 00 00 d7 d7 8a 01 00 00 00 00 67 75
【问题讨论】:
-
实际的错误消息应该包含更多信息,而不仅仅是“校验和错误”
-
@Joe 我刚刚在错误信息中添加了
标签: mongodb wiredtiger