123 lines
4.0 KiB
Bash
Executable File
123 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
unset _NGX_WORKER_PROCESSES _NGX_WORKER_PRIORITY _NGX_WORKER_RLIMIT_NOFILE _NGX_WORKER_CONNECTIONS
|
|
## here should be SANE defaults (!)
|
|
_NGX_WORKER_PROCESSES=2
|
|
_NGX_WORKER_PRIORITY=0
|
|
_NGX_WORKER_RLIMIT_NOFILE=16384
|
|
_NGX_WORKER_CONNECTIONS=4096
|
|
|
|
[ -n "${NGX_WORKER_PROCESSES:-}" ] || NGX_WORKER_PROCESSES=${_NGX_WORKER_PROCESSES}
|
|
case "${NGX_WORKER_PROCESSES}" in
|
|
"${_NGX_WORKER_PROCESSES}" ) ;;
|
|
[1-9] | [1-9][0-9] ) ;;
|
|
0 | [Aa][Uu][Tt][Oo] )
|
|
log_always "NGX_WORKER_PROCESSES=${NGX_WORKER_PROCESSES} isn't supported yet"
|
|
log_always "setting NGX_WORKER_PROCESSES=${_NGX_WORKER_PROCESSES}"
|
|
NGX_WORKER_PROCESSES=${_NGX_WORKER_PROCESSES}
|
|
;;
|
|
* )
|
|
log_always "NGX_WORKER_PROCESSES: unrecognized value: ${NGX_WORKER_PROCESSES}"
|
|
log_always "setting NGX_WORKER_PROCESSES=${_NGX_WORKER_PROCESSES}"
|
|
NGX_WORKER_PROCESSES=${_NGX_WORKER_PROCESSES}
|
|
;;
|
|
esac
|
|
|
|
[ -n "${NGX_WORKER_PRIORITY:-}" ] || NGX_WORKER_PRIORITY=${_NGX_WORKER_PRIORITY}
|
|
case "${NGX_WORKER_PRIORITY}" in
|
|
"${_NGX_WORKER_PRIORITY}" ) ;;
|
|
-[1-9] | -1[0-9] | -20 ) ;;
|
|
[0-9] | 1[0-9] | 20 ) ;;
|
|
* )
|
|
log_always "NGX_WORKER_PRIORITY: unrecognized value: ${NGX_WORKER_PRIORITY}"
|
|
log_always "setting NGX_WORKER_PRIORITY=${_NGX_WORKER_PRIORITY}"
|
|
NGX_WORKER_PRIORITY=${_NGX_WORKER_PRIORITY}
|
|
;;
|
|
esac
|
|
|
|
[ -n "${NGX_WORKER_RLIMIT_NOFILE:-}" ] || NGX_WORKER_RLIMIT_NOFILE=${_NGX_WORKER_RLIMIT_NOFILE}
|
|
case "${NGX_WORKER_RLIMIT_NOFILE}" in
|
|
"${_NGX_WORKER_RLIMIT_NOFILE}" ) ;;
|
|
[1-9] | [1-9][0-9] )
|
|
log_always "NGX_WORKER_RLIMIT_NOFILE: too low: ${NGX_WORKER_RLIMIT_NOFILE}"
|
|
log_always "setting NGX_WORKER_RLIMIT_NOFILE=${_NGX_WORKER_RLIMIT_NOFILE}"
|
|
NGX_WORKER_RLIMIT_NOFILE=${_NGX_WORKER_RLIMIT_NOFILE}
|
|
;;
|
|
## allow values within [100;9999999]
|
|
[1-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9][0-9][0-9] ) ;;
|
|
* )
|
|
log_always "NGX_WORKER_RLIMIT_NOFILE: unrecognized value: ${NGX_WORKER_RLIMIT_NOFILE}"
|
|
log_always "setting NGX_WORKER_RLIMIT_NOFILE=${_NGX_WORKER_RLIMIT_NOFILE}"
|
|
NGX_WORKER_RLIMIT_NOFILE=${_NGX_WORKER_RLIMIT_NOFILE}
|
|
;;
|
|
esac
|
|
|
|
[ -n "${NGX_WORKER_CONNECTIONS:-}" ] || NGX_WORKER_CONNECTIONS=${_NGX_WORKER_CONNECTIONS}
|
|
case "${NGX_WORKER_CONNECTIONS}" in
|
|
"${_NGX_WORKER_CONNECTIONS}" ) ;;
|
|
[1-9] | [1-9][0-9] )
|
|
log_always "NGX_WORKER_CONNECTIONS: too low: ${NGX_WORKER_CONNECTIONS}"
|
|
log_always "setting NGX_WORKER_CONNECTIONS=${_NGX_WORKER_CONNECTIONS}"
|
|
NGX_WORKER_CONNECTIONS=${_NGX_WORKER_CONNECTIONS}
|
|
;;
|
|
## allow values within [100;9999999]
|
|
[1-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9][0-9] ) ;;
|
|
[1-9][0-9][0-9][0-9][0-9][0-9][0-9] ) ;;
|
|
* )
|
|
log_always "NGX_WORKER_CONNECTIONS: unrecognized value: ${NGX_WORKER_CONNECTIONS}"
|
|
log_always "setting NGX_WORKER_CONNECTIONS=${_NGX_WORKER_CONNECTIONS}"
|
|
NGX_WORKER_CONNECTIONS=${_NGX_WORKER_CONNECTIONS}
|
|
;;
|
|
esac
|
|
|
|
nofile_soft=$(ulimit -Sn)
|
|
nofile_hard=$(ulimit -Hn)
|
|
|
|
if [ "${nofile_hard}" = unlimited ] ; then
|
|
## minor hack (if applicable) :)
|
|
nofile_hard=${NGX_WORKER_RLIMIT_NOFILE}
|
|
fi
|
|
|
|
nofile_ok=0
|
|
while : ; do
|
|
[ ${nofile_hard} -ge ${NGX_WORKER_RLIMIT_NOFILE} ] || break
|
|
[ ${nofile_soft} -ge ${NGX_WORKER_RLIMIT_NOFILE} ] || break
|
|
|
|
nofile_ok=1
|
|
break ; done
|
|
|
|
if [ ${nofile_ok} = 0 ] ; then
|
|
log_always "adjusting 'nofile' limits"
|
|
|
|
log_always "Limits before:"
|
|
sed -En '1p;/open files/p' < /proc/$$/limits >&2
|
|
|
|
if [ ${nofile_hard} -lt ${NGX_WORKER_RLIMIT_NOFILE} ] ; then
|
|
ulimit -Hn "${NGX_WORKER_RLIMIT_NOFILE}"
|
|
nofile_hard=$(ulimit -Hn)
|
|
fi
|
|
if [ ${nofile_hard} -lt ${NGX_WORKER_RLIMIT_NOFILE} ] ; then
|
|
log_always "lowering NGX_WORKER_RLIMIT_NOFILE to ${nofile_hard}"
|
|
NGX_WORKER_RLIMIT_NOFILE=${nofile_hard}
|
|
fi
|
|
|
|
if [ ${nofile_soft} -lt ${NGX_WORKER_RLIMIT_NOFILE} ] ; then
|
|
ulimit -Sn "${NGX_WORKER_RLIMIT_NOFILE}"
|
|
fi
|
|
|
|
log_always "Limits after:"
|
|
sed -En '1p;/open files/p' < /proc/$$/limits >&2
|
|
fi
|
|
unset nofile_soft nofile_hard nofile_ok
|
|
|
|
export NGX_WORKER_PROCESSES NGX_WORKER_PRIORITY NGX_WORKER_RLIMIT_NOFILE NGX_WORKER_CONNECTIONS
|
|
|
|
unset _NGX_WORKER_PROCESSES _NGX_WORKER_PRIORITY _NGX_WORKER_RLIMIT_NOFILE _NGX_WORKER_CONNECTIONS
|