我试图使用pt-查询摘要解析一个大型日志文件,但它提供了“内存不足!”当我试着读文件时。我有3GB的内存,40 3GB的空间在HDD上,文件是20 3GB。我在有关内存的文档中没有发现任何东西。
我减少以下命令:
pt-query-digest --group-by fingerprint --print --no-report /path/to/largeLogFile.log
pt-query-digest --table-access /path/to/largeLogFile.log我有两个问题:
编辑:
尝试了@DTest --sample选项(带有2和1),但是结果是一样的。在htop中内存达到50%之前,它每次都会死掉(参见scren举):

我在它死前做了一次手术:
read(3, "phone from teams as t ri"..., 4096) = 4096
mremap(0x5b27a000, 1543499776, 1543503872, MREMAP_MAYMOVE) = -1 ENOMEM (Cannot allocate memory)
mmap2(NULL, 1543503872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x64c2d000) = 0x8c2e000
mmap2(NULL, 1543634944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x5b07a000
munmap(0x5b07a000, 548864) = 0
munmap(0x5b200000, 499712) = 0
mprotect(0x5b100000, 135168, PROT_READ|PROT_WRITE) = 0
mmap2(NULL, 1543503872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
write(2, "Out of memory!\n", 15Out of memory!
) = 15
munmap(0x5b27a000, 1543499776) = 0
... [output removed] ...到目前为止,我能想到的唯一选择是分割文件“咬合大小”(假设每个文件有20个文件),消化它们并合并结果。
发布于 2012-07-20 17:04:55
我会尝试使用--sample选项:
pt-query-digest --sample 2 --print --no-report /path/to/largeLogFile.log这将过滤除前2次出现的查询指纹以外的所有事件。--no-report消除了聚合的内存和cpu开销。
https://dba.stackexchange.com/questions/21225
复制相似问题