solr 占用了大量资源,导致我的服务器崩溃

solr 占用了大量资源,导致我的服务器崩溃

我有一台 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,因为对于一般的问答网站来说,这个范围有点太狭窄了。

相关内容