首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pt-查询摘要从大型日志文件中提取查询指纹和表。

使用pt-查询摘要从大型日志文件中提取查询指纹和表。
EN

Database Administration用户
提问于 2012-07-20 12:40:25
回答 1查看 2.1K关注 0票数 5

我试图使用pt-查询摘要解析一个大型日志文件,但它提供了“内存不足!”当我试着读文件时。我有3GB的内存,40 3GB的空间在HDD上,文件是20 3GB。我在有关内存的文档中没有发现任何东西。

我减少以下命令:

代码语言:javascript
复制
pt-query-digest --group-by fingerprint --print --no-report /path/to/largeLogFile.log
pt-query-digest --table-access /path/to/largeLogFile.log

我有两个问题:

  1. 如何从general_log生成的大型日志文件中提取查询指纹?
  2. 如何提取所使用的所有表?

编辑:

尝试了@DTest --sample选项(带有2和1),但是结果是一样的。在htop中内存达到50%之前,它每次都会死掉(参见scren举):

我在它死前做了一次手术:

代码语言:javascript
复制
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个文件),消化它们并合并结果。

EN

回答 1

Database Administration用户

发布于 2012-07-20 17:04:55

我会尝试使用--sample选项:

代码语言:javascript
复制
pt-query-digest --sample 2 --print --no-report /path/to/largeLogFile.log

这将过滤除前2次出现的查询指纹以外的所有事件。--no-report消除了聚合的内存和cpu开销。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/21225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档