崩溃后,solr / tomcat7无法恢复

时间:2016-03-26 06:19:28

标签: unix solr tomcat7

我一直在服务器上遇到 Solr 崩溃的问题。它几乎不是一个繁忙的网站,所以我很困惑为什么一直这样做。

无论如何,作为一个中介 - 我写了一个以root身份在cron上运行的shell脚本:

#!/bin/bash

declare -a arr=(tomcat7 nginx mysql);

for i in "${arr[@]}"
do
   echo "Checking $i"
    if (( $(ps -ef | grep -v grep | grep $i | wc -l) > 0 ))
    then
    echo "$i is running!!!"
    else
    echo "service $i start\n"
    service $i start
    fi
done

# re-run, but this time do a restart if its still not going!
for i in "${arr[@]}"
do
   echo "Checking $i"
    if (( $(ps -ef | grep -v grep | grep $i | wc -l) > 0 ))
    then
    echo "$i is running!!!"
    else
    service $i restart
    fi
done

..然后这个cron(作为root)

 */5 * * * * bash /root/script-checks.sh

cron本身似乎运行良好:

Checking tomcat7
service tomcat7 start\n
Checking nginx
nginx is running!!!
Checking mysql
mysql is running!!!
Checking tomcat7
Checking nginx
nginx is running!!!
Checking mysql
mysql is running!!!

......和Tomcats的状态似乎还不错:

root@domain:~# service tomcat7 status
â tomcat7.service - LSB: Start Tomcat.
   Loaded: loaded (/etc/init.d/tomcat7)
   Active: active (exited) since Mon 2016-03-21 06:33:28 GMT; 4 days ago
  Process: 2695 ExecStart=/etc/init.d/tomcat7 start (code=exited, status=0/SUCCESS)

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

...但是我的脚本无法连接到Solr:

Could not parse JSON response: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Can't connect to loc...") at /srv/www/domain.net/www/cgi-bin/admin/WebService/Solr/Response.pm line 42. Can't connect to localhost:8080 Connection refused at /usr/share/perl5/LWP/Protocol/http.pm line 49.

如果我手动运行“重启”:

service tomcat7 restart

......然后它再次开始工作。它几乎就像我的shell脚本中的第二部分不起作用。

有什么建议吗?

我的Solr版本如下:

Solr Specification Version: 3.6.2.2014.10.31.18.33.47
Solr Implementation Version: 3.6.2 debian - pbuilder - 2014-10-31 18:33:47
Lucene Specification Version: 3.6.2

更新:我读过有时更新 maxThreads 可以帮助解决崩溃问题,所以我已将其更改为10,000:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="10000" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />

我想时间会证明这是否可以解决问题。

1 个答案:

答案 0 :(得分:0)

好吧,我从来没有明白为什么它不会重新启动...但我已经弄清楚它为什么会崩溃。之前,我们在2048mb RAM Linode服务器上使用它,但是当我们转移到Apache2时,我设置了一个1024Mb的服务器,并且要将它升级到2048mb,我们已经完成了所有工作。但是,我们把它放到了现场 - 但是我忘了将它更新到2048mb服务器,所以Nginx / Apache2 / Tomcat / MySQL等都试图在一个非常慢的服务器上运行。

我们发现Solr因OOM(内存不足)错误而死亡,这就是我们的线索。

希望这有助于其他可能遇到此问题的人。