| @@ -1,53 +1,66 @@ | | | @@ -1,53 +1,66 @@ |
1 | #! @RCD_SCRIPTS_SHELL@ | | 1 | #! @RCD_SCRIPTS_SHELL@ |
2 | # | | 2 | # |
3 | # $NetBSD: elasticsearch.sh,v 1.1 2014/04/16 17:22:14 imil Exp $ | | 3 | # $NetBSD: elasticsearch.sh,v 1.2 2014/04/25 08:47:52 imil Exp $ |
4 | # | | 4 | # |
5 | # PROVIDE: elasticsearch | | 5 | # PROVIDE: elasticsearch |
6 | # REQUIRE: DAEMON | | 6 | # REQUIRE: DAEMON |
7 | # | | 7 | # |
8 | | | 8 | |
9 | . /etc/rc.subr | | 9 | . /etc/rc.subr |
10 | | | 10 | |
11 | name="elasticsearch" | | 11 | name="elasticsearch" |
12 | rcvar=$name | | 12 | rcvar=$name |
13 | pidfile="@ES_PIDDIR@/elasticsearch.pid" | | 13 | pidfile="@ES_PIDDIR@/elasticsearch.pid" |
14 | required_files="@PKG_SYSCONFDIR@/elasticsearch.yml" | | 14 | required_files="@PKG_SYSCONFDIR@/elasticsearch.yml" |
15 | start_precmd="elasticsearch_precmd" | | 15 | start_precmd="elasticsearch_precmd" |
16 | | | 16 | |
17 | : ${elasticsearch_user:=@ES_USER@} | | 17 | : ${elasticsearch_user:=@ES_USER@} |
18 | : ${elasticsearch_group:=@ES_GROUP@} | | 18 | : ${elasticsearch_group:=@ES_GROUP@} |
19 | : ${elasticsearch_config:="@PKG_SYSCONFDIR@/elasticsearch.yml"} | | 19 | : ${elasticsearch_config:="@PKG_SYSCONFDIR@/elasticsearch.yml"} |
20 | : ${elasticsearch_min_mem:="256m"} | | 20 | : ${elasticsearch_min_mem:="256m"} |
21 | : ${elasticsearch_max_mem:="1g"} | | 21 | : ${elasticsearch_max_mem:="1g"} |
22 | : ${elasticsearch_props:=""} | | 22 | : ${elasticsearch_props:=""} |
| | | 23 | : ${elasticsearch_fdlimit:="768"} |
23 | | | 24 | |
24 | ES_CLASSPATH="@ES_LIBDIR@/@DISTNAME@.jar:@ES_LIBDIR@/*" | | 25 | ES_CLASSPATH="@ES_LIBDIR@/@DISTNAME@.jar:@ES_LIBDIR@/*" |
25 | | | 26 | |
26 | command="@PKG_JAVA_HOME@/bin/java" | | 27 | command="@PKG_JAVA_HOME@/bin/java" |
27 | # flags taken from bin/elasticsearch and bin/elasticsearch.in.sh | | 28 | # flags taken from bin/elasticsearch and bin/elasticsearch.in.sh |
28 | command_args=" -Delasticsearch \ | | 29 | command_args=" -Delasticsearch \ |
29 | -Des.pidfile=${pidfile} \ | | 30 | -Des.pidfile=${pidfile} \ |
30 | -Des.config=${elasticsearch_config} \ | | 31 | -Des.config=${elasticsearch_config} \ |
31 | -Xms${elasticsearch_min_mem} \ | | 32 | -Xms${elasticsearch_min_mem} \ |
32 | -Xmx${elasticsearch_max_mem} \ | | 33 | -Xmx${elasticsearch_max_mem} \ |
33 | -Xss256k \ | | 34 | -Xss256k \ |
34 | -Djava.awt.headless=true \ | | 35 | -Djava.awt.headless=true \ |
35 | -XX:+UseParNewGC \ | | 36 | -XX:+UseParNewGC \ |
36 | -XX:+UseConcMarkSweepGC \ | | 37 | -XX:+UseConcMarkSweepGC \ |
37 | -XX:CMSInitiatingOccupancyFraction=75 \ | | 38 | -XX:CMSInitiatingOccupancyFraction=75 \ |
38 | -XX:+UseCMSInitiatingOccupancyOnly \ | | 39 | -XX:+UseCMSInitiatingOccupancyOnly \ |
39 | -XX:+HeapDumpOnOutOfMemoryError \ | | 40 | -XX:+HeapDumpOnOutOfMemoryError \ |
40 | -XX:+UseCMSInitiatingOccupancyOnly \ | | 41 | -XX:+UseCMSInitiatingOccupancyOnly \ |
41 | -cp ${ES_CLASSPATH} \ | | 42 | -cp ${ES_CLASSPATH} \ |
42 | ${elasticsearch_props} \ | | 43 | ${elasticsearch_props} \ |
43 | org.elasticsearch.bootstrap.Elasticsearch \ | | 44 | org.elasticsearch.bootstrap.Elasticsearch \ |
44 | >/dev/null &" | | 45 | >/dev/null &" |
45 | | | 46 | |
| | | 47 | # ElasticSearch is fd hungry, default limit leads to write locks |
| | | 48 | SOFT_FDLIMIT=`ulimit -S -n` |
| | | 49 | HARD_FDLIMIT=`ulimit -H -n` |
| | | 50 | |
| | | 51 | if [ ${elasticsearch_fdlimit} -gt ${SOFT_FDLIMIT} ]; then |
| | | 52 | if [ ${elasticsearch_fdlimit} -le ${HARD_FDLIMIT} ]; then |
| | | 53 | ulimit -S -n ${elasticsearch_fdlimit} |
| | | 54 | else |
| | | 55 | ulimit -S -n ${HARD_FDLIMIT} |
| | | 56 | fi |
| | | 57 | fi |
| | | 58 | |
46 | elasticsearch_precmd() | | 59 | elasticsearch_precmd() |
47 | { | | 60 | { |
48 | @TOUCH@ ${pidfile} | | 61 | @TOUCH@ ${pidfile} |
49 | @CHOWN@ ${elasticsearch_user}:${elasticsearch_group} ${pidfile} | | 62 | @CHOWN@ ${elasticsearch_user}:${elasticsearch_group} ${pidfile} |
50 | } | | 63 | } |
51 | | | 64 | |
52 | load_rc_config "$name" | | 65 | load_rc_config "$name" |
53 | run_rc_command "$1" | | 66 | run_rc_command "$1" |