1. 程式人生 > >Tomcat upstart指令碼,及max open files相關

Tomcat upstart指令碼,及max open files相關

伺服器上的tomcat可以直接使用catalina.sh啟動,也可以使用linux的upstart封裝成系統服務更加方便的進行管理,指令碼放到_/etc/init_下,命名為tomcat.conf,即可用initctl stop/start/restart tomcat停止/啟動/重啟tomcat服務,指令碼如下:

description "Tomcat Server"

  start on runlevel [2345]
  stop on runlevel [!2345]
  respawn
  respawn limit 10 5

  setuid root
  setgid root

  limit nofile 8192 8192

  env JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
  env CATALINA_HOME=/opt/tomcat

  # Modify these options as needed
  env JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom"
  env CATALINA_OPTS="-Xms2048M -Xmx2048M -XX:NewRatio=1 -server -XX:+UseParallelGC"

  exec $CATALINA_HOME/bin/catalina.sh run >> "/opt/tomcat/logs/catalina.out" 2>&1

  # cleanup temp directory after stop
  post-stop script
    rm -rf $CATALINA_HOME/temp/*
  end script#

使用restart重啟時要注意,不會將指令碼內的改動實時載入執行,而是執行之前指令碼的備份,載入執行最新的指令碼內容需要先stop,在執行start,官方解釋--http://upstart.ubuntu.com/cookbook/#initctl-restart

另,壓測時如果併發執行緒過多,tomcat往往會報max open files的異常資訊,導致請求失敗,當使用upstart啟動tomcat時,需要新增limit nofile 8192 8192指定tomcat程序能夠開啟的最大檔案數,直接執行catalina.sh啟動tomcat時,tomcat進行能夠開啟的最大檔案數與啟動tomcat的使用者許可權一致,可以使用命令--ulimit -n **** 來指定。