我有一台 Ubuntu 9.10 服务器,配备 12G Ram/四核/HD 80GB RAID。并且我已经安装了 solrlucidworks-企业安装程序-1.7在其上索引一个小型数据库(大约 20,000 篇文章)。
一旦我们的编辑开始使用 solr 功能来搜索特定文章(使用 solr 的编辑只有 5 名),服务器负载就会成倍增加!!
$ 顶部 顶部 - 08:29:29 启动 25 天,20:04,1 个用户,平均负载:46.23、59.69、38.29 任务:总计 2695 个,其中 1 个正在运行,2693 个正在休眠,0 个已停止,1 个僵尸 CPU:14.2%us,2.6%sy,0.0%ni,45.7%id,35.9%wa,0.1%hi,1.4%si,0.0%st 内存:总计 12331880k,已用 12245716k,可用 86164k,缓冲区 3140k 交换:总计 3229024k,已使用 3228600k,可用 424k,缓存 139184k PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 17448 根 20 0 3710m 1.4g 3300 S 61 11.7 37:32.39 java
编辑
在我的 dataconfig.xml 中
<entity name="root" pk="id" preImportDeleteQuery="data_source:1" query="select a.id, a.body, a.headline title ,a.date datecreated, a.title_id, t.name publisher_name from article as a inner join title as t on t.id=a.title_id" transformer="TemplateTransformer" deltaImportQuery="select a.id, a.body, a.headline title ,a.date datecreated, a.title_id, t.name publisher_name from article as a inner join title as t on t.id=a.title_id where a.id='${dataimporter.delta.id}'" deltaQuery="select id from article where last_update_time > '${dataimporter.last_index_time}'"> <field column="data_source" template="1"/> <field column="data_source_type" template="Jdbc"/> <field column="data_source_name" template="db_solr"/> </实体>
以及 mysql 数据库中的表
mysql>描述文章; +------------------+--------------+------+-----+-------------------+-------+ | 字段 | 类型 | Null | 键 | 默认 | 额外 | +------------------+--------------+------+-----+-------------------+-------+ | ID | int(255)| 否 | PRI | | | | nid | int(11) | 否 | MUL | 0 | | | title_id | int(11) | 否 | MUL | 0 | | | language_id | int(255) | 否 | MUL | | | | 标题 | varchar(255) | 是 | | NULL | | | 摘要 | 文本 | 是 | | NULL | | | 主体 | 文本 | 是 | | NULL | | | 作者 | varchar(255) | 是 | | NULL | | | 日期 | 日期 | 是 | MUL | NULL | | | parsed_at | 日期时间 | 是 | MUL | NULL | | | updated_at | 日期时间 | 是 | | NULL | | | 上次更新时间 | 时间戳 | 否 | | CURRENT_TIMESTAMP | | +------------------+--------------+------+-----+-------------------+-------+ 每组 12 行(0.02 秒) mysql>从文章中选择count(*); +----------+ | 计数(*) | +----------+ | 19560 | +----------+ 1 行 (0.00 秒)
我还通过应用找到了下面这行代码的 7 个实例ps aux |grep“DlucidworksHome = / etc / solr”|grep -v grep
java -server -DlucidworksHome=/etc/solr -XX:MaxPermSize=256m -DSTOP.PORT=8887 -DSTOP.KEY=stopLucidWorks -Djava.awt.headless=true -Dlog4j.configuration=file:conf/log4j.xml -Dorg.restlet.engine.loggerFacadeClass=org.restlet.ext.slf4j.Slf4jLoggerFacade -Duser.language=en -Duser.country=US -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djetty.port=8888 -Djetty.home=jetty -jar ./jetty/start.jar ./jetty/etc/jetty.xml ./jetty/etc/jetty-ssl.xml
知道是什么原因导致的吗... (Solr 占用了 12G Ram 的 11.7%!!)。通常我的平均负载大约是 3-5,但是一旦我启动 solr,它就会变成 40-70,
我错了吗?Solr 产生这样的负载是正常的吗?
请原谅我对 solr 的无知 :)
感谢您的帮助
答案1
(由于篇幅较长,我将其作为答案发布,而不是评论)
在我上一份工作中使用了 Lucene,在具有 1 CPU 和 3GB RAM 的虚拟服务器上索引了超过 500,000 篇文章。
我开始觉得你与文章交互的方式出了问题……每次更新/创建一篇文章时,是不是都要进行一次完整索引?你的 CPU 上有大量的 I/O 等待,这让我觉得数据库正在破坏你的 raid。
这些当然只是猜测,但这绝对不是您的操作系统的问题。
您可能应该联系 solr,因为对于一般的问答网站来说,这个范围有点太狭窄了。