我在Ubuntu Linux 12.04.1服务器中使用以下命令安装了Monit
sudo apt-get install monit
我使用Monit的主要目标是在终止/停止时自动重启我的 – MySQL和Apache tomcat服务。
#Check and restart mysql service check process mysqld with pidfile "/run/mysqld/mysqld.pid" group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 protocol mysql then restart if 5 restarts within 5 cycles then timeout
上面的代码完美工作,Monit重新启动MySQL服务(当它被杀死/停止)。
我已经实际configuration了tomcat,如下所示: – 下载了tomcat zip并解压缩到一个特定的位置 – configuration成我的守护程序服务(和我的tomcat服务器正常工作)。
由于我没有这个tomcat安装程序的pid文件,我打算检查tomcat的状态并使用下面的代码启动它:
#Check and restart tomcat service check host tomcat with address 127.0.0.1 stop program = "/etc/init.d/tomcat stop" start program = "/etc/init.d/tomcat start" if failed port 8080 and protocol http then start
但是,我无法成功启动tomcat(当它死亡)。 在调查Monit日志时,我发现了以下消息:
[UTC Dec 24 12:08:23] error : 'tomcat' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP [UTC Dec 24 12:08:23] info : 'tomcat' start: /etc/init.d/tomcat
通过上面的日志,我发现Monit试图在每个特定的时间自动启动tomcat(当它发现tomcat服务被终止的时候)。 但是,一些内部冲突阻止了这一点!
其他信息:
Tomcat服务器通过使用端口8080正常运行:
netstat -an | grep 8080 tcp6 0 0 :::8080 :::* LISTEN tcp6 0 0 127.0.0.1:8080 127.0.0.1:53582 TIME_WAIT ps -ef|grep tomcat root 16237 1 9 12:10 ? 00:00:37 /usr/lib/jvm/java-6-oracle/bin/java -Djava.util.logging.config.file=/usr/share/apache-tomcat-7.0.40/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.endorsed.dirs=/usr/share/apache-tomcat-7.0.40/endorsed -classpath /usr/share/apache-tomcat-7.0.40/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.40/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/apache-tomcat-7.0.40 -Dcatalina.home=/usr/share/apache-tomcat-7.0.40 -Djava.io.tmpdir=/usr/share/apache-tomcat-7.0.40/temp org.apache.catalina.startup.Bootstrap start root 16851 16847 0 12:17 ? 00:00:00 sh -c su root -c ps\ \-ef\|grep\ tomcat 2>&1 2>/dev/null root 16852 16851 0 12:17 ? 00:00:00 su root -c ps -ef|grep tomcat root 16853 16852 0 12:17 ? 00:00:00 bash -c ps -ef|grep tomcat root 16855 16853 0 12:17 ? 00:00:00 grep tomcat
在catalina.sh文件中添加preferIPv4Addresses和preferIPv4Stack:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
Monit日志:
[UTC Dec 24 12:48:39] error : 'tomcat' failed protocol test [HTTP] at INET[127.0.0.1:8080] via TCP -- HTTP: Error receiving data -- Resource temporarily unavailable
任何人都可以请指导我呢?
谢谢。
似乎Tomcat将自己绑定到127.0.0.1的ipv6地址。
您可以尝试在Java选项中使用preferIPv4Stack=true和preferIPv4Addresses=true指令来绑定到一个ipv4地址
编辑catalina.sh Tomcat启动脚本并添加以下内容:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"