之前是使用12台机分布式搜索,1台为主机做索引并分发给子机,8台做大索引搜索服务,3 台做小索引搜索服务,配置基本是内存在4-8G,cpu:2-8core的服务器,索引的大小为8G。搜索的响应时间 是150ms左右。(使用solr架构的搜索服务)

在一次技术群中,中听到一位sina的架构师,他们是采用基于lucene做的搜索服务,索引在20多G数据量,差不多是在亿的级别上,PV量在500万/天左右,高峰时期500个并发量/s,采用的是增量索引 ,读写索引都在同一台机上。他们并没有采用分布式,而是采用单机提供服务,主要是在配置上内存提高 到32-64G,再加cpu:32个core.

到底他们在架构上采取了什么样的优化,并不得而知。但从中可以得知,采取大内存的处理比使用硬盘的快1000倍左右。所以我们也测试 了一下采用大内存的设计。使用的机器配置是32G,4个core CPU。

使用的搜索服务是用solr搭建的,主要修改它的索引目录位置,将索引目录设置为内存(在linux中,可以将内存映射为硬盘),然后关掉了其它8台大索引的服务,即是将主要的搜索服务都分给新配置的机器。测试了几天,它的性能果真是好很多。平均响应时间是30ms。在取文档的时间上几乎为0ms,主要消耗的时间在计算跟排序上,由于排序时用了六个索引字段,动态计算bf分数,这里才是费了最多时间的。而这里其实也可以优化的,即在建索引的时候,就先计算好每个文档的bf分数(有时间再做优化)。相信可以提高到10ms左右的响应时间 。

solr的本身设计也是多线程,高峰的时候有几十条线程并发,负载到了4左右,现在单机的瓶颈在CPU上,如果cpu再高些,基本上就可以安稳地顶起高峰时期,或者再多台同样配置的机器负载。

现在的索引只有8G,如果到了20G(一亿左右的数据量)的话,不知道会怎么样,请拭目以待。

提高solr的搜索速度的更多相关文章

  1. lucene正向索引(续)——域(Field)的元数据信息在.fnm里,在倒排表里,利用跳跃表,有利于大大提高搜索速度。

    4.1.2. 域(Field)的元数据信息(.fnm) 一个段(Segment)包含多个域,每个域都有一些元数据信息,保存在.fnm文件中,.fnm文件的格式如下: FNMVersion 是fnm文件 ...

  2. 加速 lucene 的搜索速度 ImproveSearchingSpeed

    * Be sure you really need to speed things up. Many of the ideas here are simple to try, but others w ...

  3. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  4. mysql 如何提高批量导入的速度

    mysql 如何提高批量导入的速度 最近一个项目测试,有几个mysql数据库的表数据记录达到了几十万条,在搭建测试环境 导入 测试数据时,十分慢.在网上搜索了一下,有下面一些方法可以加快mysql数据 ...

  5. Elasticsearch 调优之 搜索速度优化

    本章讨论搜索速度优化:搜索速度与系统资源.数据索引方式.查询方式等多方面 1.为文件系统cache预留足够的内存 1)应用程序一般情况下,读写都会被操作系统“cache” 2)cache保存在物理内存 ...

  6. ES集群调整搜索速度

    一.内存文件系统足够的缓存 Elasticsearch严重依赖于文件系统缓存,以加快搜索速度.通常,您应确保至少有一半的可用内存分配给文件系统缓存,以便Elasticsearch可以将索引的热区保留在 ...

  7. Web前端性能优化总结——如何提高网页加载速度

    一.提高网页加载速度的必要性 国际知名的一组来自Jupiter Research的数据显示:购物者在访问网站过程中的不满会导致销售损失和品牌受损,其中 77%的人将不再访问网站 ,62%的人不再从该网 ...

  8. 转:如何在Linux上提高文本的搜索效率

    原文来自于:http://www.geekfan.net/6881/ 对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,grep类型的工具大概是最受欢迎的. ...

  9. FreeBSD 安装axel提高ports的安装速度

    ########################  FreeBSD安装Ports ######################## 1 # ee /etc/portsnap.conf 设置SERVER ...

随机推荐

  1. PHP文件上传大小设置

    PHP.INI配置:文件上传功能配置教程 打开php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项. php.ini中文件上 ...

  2. ElasticSearch—分页查询

    ElasticSearch查询—分页查询详解 Elasticsearch中数据都存储在分片中,当执行搜索时每个分片独立搜索后,数据再经过整合返回.那么,如何实现分页查询呢? 按照一般的查询流程来说,如 ...

  3. CTF-练习平台-Misc之 妹子的陌陌

    二十五.妹子的陌陌 该图片后缀名为rar,发现里面有一个文本 但是解压需要密码,应为不知道是几位的没法爆破,观察图片后发现红色字体:“喜欢我吗.”尝试一下,居然是密码,将文本解压出来 内容如下: 嘟嘟 ...

  4. No result defined for action com.nynt.action.ManageAction and result input问题

    No result defined for action com.nynt.action.ManageAction and result input 问题原因: 1). 在action类中定义的一个r ...

  5. ImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsImageCollectiontopic The collec ...

  6. SharedImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsSharedImageCollectiontopic The ...

  7. 基于windows IIS的C语言CGI WEB服务器环境搭建

    网页编程对我来说特别亲切,因为我就是从html.ASP.PHP一步步接触编程的.自己的编程爱好也是从那里一点一点被满足.不过离开大学之后很久没有碰过WEB了,最近看到嵌入式中的涉及到的web服务器,了 ...

  8. Linux下的Nginx部署禅道

    基本思路:先安装好nginx和mysql和php,上传禅道的源码.把禅道的源码包扔到 nginx/apache 的工程路径内或者nginx/apache内的配置文件指向nginx的路径,然后将ngin ...

  9. button使用注意

    <button type="button" class="btn btn-primary" onclick="ChangePassword(); ...

  10. QString 和char数组转换(转)

    在qt开发过程中经常遇到QString类和char数组进行转换,在此记录一下: QString->char数组 1 2 3 QString str="12fff"; QByt ...