(2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
AWK内存泄露:
这几天本来就很郁闷,遇到搭建在hadoop平台上的hive平台有很多问题。写个好好的sql语句,总是说这个错误那个错误。然后,今天遇到一个更加郁闷的问题,居然分析淘宝数据的awk都运行不了了,出现了传说中的内存不足的错误。
如下2个简单的awk语句:
awk '{match($4, /(search.taobao.com.+uniq=seller.*)/,a); if(a[1] != null) c++;}END{print c}'
awk '{match($4, /(search.taobao.com)/,a); if(a[1] != null)
c++;}END{print c}'
第一个运行起来好好的,第二个就狂占内存。
google了一番,原来据说是3.1.7版本之前的gawk都有这类内存泄露问题。而我们的服务器安装的居然是老掉牙的3.1.5。
咨询运维的兄弟,请求帮忙安装一个最新版上去,再看看情况。
缓慢的AWK正则:
最近分析的数据量都很大,一般的时候,都需要用awk从日志里面提取有用的信息,大部分时间都是用一个正则表达式搞定一切。
接着,俺就发现一个大问题。每次awk进行提取的时候(用match),总是很缓慢,vmstat看到的磁盘io特别小,但cpu却100%。今天俺用java写了一个小类,用来专门搞正则表达式的提取。一测试,发现了如下的情况:
1、正则表达式:visitKey:([0-9]+).+fullUrl[^,]+([0-9A-F]{32})
2、awk语句: cat /data/comm_click_log/boss_comm/20100516/* |
/usr/local/gawk-3.1.8/bin/awk --re-interval
'{match($0,/visitKey:([0-9]+).+fullUrl[^,]+([0-9A-F]{32})/,c); print c[1] "\t"
c[2]}' >tmp
处理速度为:4040行/s
3、java语句:cat /data/comm_click_log/boss_comm/20100516/* | java -cp dm.jar
dm.util.Extract "visitKey:([0-9]+).+fullUrl[^,]+([0-9A-F]{32})"
>tmp
处理速度为:15873行/s
用java来做,速度居然是awk的4倍。无语了。遇到大东西俺就用java的库来做了。
(2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度的更多相关文章
- 轻松排查线上Node内存泄漏问题
I. 三种比较典型的内存泄漏 一. 闭包引用导致的泄漏 这段代码已经在很多讲解内存泄漏的地方引用了,非常经典,所以拿出来作为第一个例子,以下是泄漏代码: 'use strict'; const exp ...
- VS 2010内存泄漏检测
控制台程序在启动时调用 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); 程序正常退出后会打印内存泄漏信息. MFC程序不用 ...
- Android内存泄漏检测利器:LeakCanary
Android内存泄漏检测利器:LeakCanary MAR 28TH, 2016 是什么? 一言以蔽之:LeakCanary是一个傻瓜化并且可视化的内存泄露分析工具 为什么需要LeakCanary? ...
- 虚析构函数? vptr? 指针偏移?多态数组? delete 基类指针 内存泄漏?崩溃?
五条基本规则: 1.如果基类已经插入了vptr, 则派生类将继承和重用该vptr.vptr(一般在对象内存模型的顶部)必须随着对象类型的变化而不断地改变它的指向,以保证其值和当前对象的实际类型是一致的 ...
- iOS中滤镜处理及相关内存泄漏问题的解决
最近工作之余在做一个美图秀秀的仿品 做到滤镜这块的时候 自己就参考了网上几位博主(名字忘了记,非常抱歉)的博客,但是发现跟着他们的demo做的滤镜处理,都会有很严重的内存泄漏,于是就自己按照大体的思 ...
- Android应用内存泄漏的定位、分析与解决策略
什么是内存泄漏 对于不同的语言平台来说,进行标记回收内存的算法是不一样的,像 Android(Java)则采用 GC-Root 的标记回收算法.下面这张图就展示了 Android 内存的回收管理策略( ...
- Android WebView Memory Leak WebView内存泄漏
在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html 前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那 ...
- 使用Memory Analyzer tool(MAT)分析内存泄漏(一)
转载自:http://www.blogjava.net/rosen/archive/2010/05/21/321575.html 前言 在平时工作过程中,有时会遇到OutOfMemoryError,我 ...
随机推荐
- b/s客户端和服务器的交互(转)
原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ 作为一个软件开发者,你一定会对网络应用如何工作有 ...
- URAL 1029
题目大意:M层N列的矩阵(各元素均为正整数),找出一个路径从第一层到达第M层,使得路径上的所有数的和是所有可达路径中最小的,每次上到下一层以后就不能再上去,依次输出路径上的各点在所在层的列数. KB ...
- 脱机BT transmission
脱机BT transmission http://192.168.1.1:9091 也可以在使用Transmission Remote软件进行管理,如果下载太慢检查QoS 如果开了防火墙,需要打开默认 ...
- BZOJ1689: [Usaco2005 Open] Muddy roads
1689: [Usaco2005 Open] Muddy roads Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 147 Solved: 107[Su ...
- dataList中实现用复选框一次删除多行问题
先遍历每一行,判断checkBox是否选中,再获取选中行的主键Id 删除就行了 ,,,foreach(DatalistRow rowview in Datalist.Rows) //遍历Datalis ...
- ASP.NET文件组成(转载于Owen的BLOG)
一.扩展名: .aspx:窗体文件,为前台程序. .cs文件:类文件,主要为后台数据处理,供所有的.aspx文件的后台应用. .asmx文件:用于创建从其他应用程序使用的web服务的类. .css文件 ...
- 除了修改WEBCONFIG会导致WEB服务重启外,还有其他的什么操作会导致重启?
1.修改WEBCONFIG文件 2.BIN文件夹下,添加.删除.覆盖文件 3.IIS应用程序池回收 参考文章:http://blog.csdn.net/hb_gx/archive/2007/05/ ...
- PHP关于时区问题
最近在学习PHP过程中发现PHP中的格式化时间戳比北京时间晚了8个小时,上网搜索发现原来是时区不对,解决办法是: 1.永久修改 更改php.ini文件中的data.tim ...
- [置顶] API相关工作过往的总结之Sandcastle简要使用介绍
Sandcastle介绍 在微软推出Sandcastle之前,人们倾向于选择开源的NDoc(.NET代码文档生成器).NDo可以将 C#.NET 编译生成的程序集和对应的 /doc XML文档,自动转 ...
- C++程序面试笔迹六
1.const和static的作用 用最熟悉的语言: 2.阶乘求和 如:1!+2!+3!+4!+……+n!=sum? 3.删除掉字符串中相同的字母只留有一个 如: akkkjjtyy——> ...