这几天被服务器内存的事情,搞的脑袋都大了,由于服务器预估不足,程序耗用的内存过大,连做梦都在琢磨办法解决,由于程序对于内存管理这块的结构设计已经非常精巧了,从结构上优化的潜力不大。
后来不得不从存入内存的内容入手,目前的程序将大量的url存在内存里面,所以很容易的想法就是将这些url压缩了。
想到了立马就干,早上6点爬起来,用zlib就开始做。
简单看了一下帮助,就调用compress函数来做了。
可是结果却给我泼了一大盆冷水,compress函数对url这样的短文本基本上没有作用:(
但是现在看来压缩url是比较好的解决方法,因为这样不需要对程序架构进行更改。那只能继续看帮助和zlib的源代码,原来compress这个函数其实就是对deflateInit,deflate这几个函数的封装,仔细的读了一下这几个函数的manpage,发现对于短文本的操作应该这样配置:
1. 取消压缩时加入的header和crc附加码(将windowBits 设置为负值,这样deflate() 就只会生成原始的压缩内容,这点对短文本非常有效)
2. 加入短文本中的高频词到压缩字典中(这点对url这样的数据很有效果)
代码如下: