Archive for 十一月, 2010
Solr复制bug一例:Unable to move index file from tempfile to indexfile
星期三, 十一月 24th, 2010
22日下午3时多,收到搜索系统的报警邮件,错误日志如下:
[2010-11-22 15:16:14][ERROR][pool-6-thread-1][SnapPuller.java(650)]Unable to move index file from: /indexpath/index.20101122031500/_21.frq to: /indexpath/index.20101122031000/_21.frq
SnapPuller是Solr复制用到的一个类,我对它做了一些修改,所以把它挪到我的代码里了。报错的代码片断如下:
httpclient的并发连接问题
星期六, 十一月 20th, 2010
昨天的搜索系统又出状况了,几个库同时重建索引变得死慢。经过一个上午的复现分析,确定问题出现httpclient的使用上。搜索系统在重建索引时,是并发多个线程(默认是8个)不停的从PHP客户端取数据(当然,从另一个角度来说,搜索系统是客户端,PHP端是服务端),取回后放到一个队列里由单独的一个线程更新索引。在测试环境复现发现,对于一个请求,PHP端打印耗时是1-2秒,但搜索端打印在4-6秒。这种耗时差别也就两种可能性,一个是PHP端返回到搜索端接受完耗时太长,另一个就是搜索端在真正发给PHP端数据前等待了很久。因为有了之前的jetty7的困顿,起初我怀疑是传输数据的问题。因为请求数据的代码部分我只是简单的使用了httpclient,所以只能从httpclient着手分析。我想到把PHP端和搜索端的请求起始和结束时间都打出来对照一下,不过在这样做之前我把搜索端的并发请求线程数调到了1,看下单线程情况下效果如何,结果惊奇地发现PHP端和搜索端的耗时相近。所以,可以确定,是httpclient的并发连接处理上可能存在问题。
solr拾遗:引用计数
星期六, 十一月 13th, 2010
据我不完全统计,solr代码中使用引用计数的用途有两种:一个是引用资源,一个是引用对象。技术上来说引用计数的使用没多少可大说的,不过如果没有正确的close获得的资源和对象,泄漏的bug就出现了。
oracle提升mysql售价,误解与无视
星期天, 十一月 7th, 2010
前几天就在twitter上看到oracle提升mysql售价的消息,推上的英文圈对oracle的这一举动议论纷纷,但中文圈很是平静,倒是像 csdn、javaeye这样的媒体做头条报道:Oracle提高了MySQL的售价。这一新闻难免又引起大家对mysql前景的悲观,对迁移存储系统到postgre、nosql等蠢蠢欲动。其实多数mysql使用者可以轻松的忽略这一新闻,因为人家 oracle提价mysql影响的是买收费版本mysql的用户,并不会影响我等使用免费版本的用户。