CoolFace
Apppublic

dumamai/java-fpm

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
30-tune-worker-processes.sh188 linesDownload Raw Back to scripts
1#!/bin/sh2# vim:sw=2:ts=2:sts=2:et3 4set -eu5 6LC_ALL=C7ME=$( basename "$0" )8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin9 10[ "${NGINX_ENTRYPOINT_WORKER_PROCESSES_AUTOTUNE:-}" ] || exit 011 12touch /etc/nginx/nginx.conf 2>/dev/null || { echo >&2 "$ME: error: can not modify /etc/nginx/nginx.conf (read-only file system?)"; exit 0; }13 14ceildiv() {15  num=$116  div=$217  echo $(( (num + div - 1) / div ))18}19 20get_cpuset() {21  cpusetroot=$122  cpusetfile=$223  ncpu=024  [ -f "$cpusetroot/$cpusetfile" ] || return 125  for token in $( tr ',' ' ' < "$cpusetroot/$cpusetfile" ); do26    case "$token" in27      *-*)28        count=$( seq $(echo "$token" | tr '-' ' ') | wc -l )29        ncpu=$(( ncpu+count ))30        ;;31      *)32        ncpu=$(( ncpu+1 ))33        ;;34    esac35  done36  echo "$ncpu"37}38 39get_quota() {40  cpuroot=$141  ncpu=042  [ -f "$cpuroot/cpu.cfs_quota_us" ] || return 143  [ -f "$cpuroot/cpu.cfs_period_us" ] || return 144  cfs_quota=$( cat "$cpuroot/cpu.cfs_quota_us" )45  cfs_period=$( cat "$cpuroot/cpu.cfs_period_us" )46  [ "$cfs_quota" = "-1" ] && return 147  [ "$cfs_period" = "0" ] && return 148  ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )49  [ "$ncpu" -gt 0 ] || return 150  echo "$ncpu"51}52 53get_quota_v2() {54  cpuroot=$155  ncpu=056  [ -f "$cpuroot/cpu.max" ] || return 157  cfs_quota=$( cut -d' ' -f 1 < "$cpuroot/cpu.max" )58  cfs_period=$( cut -d' ' -f 2 < "$cpuroot/cpu.max" )59  [ "$cfs_quota" = "max" ] && return 160  [ "$cfs_period" = "0" ] && return 161  ncpu=$( ceildiv "$cfs_quota" "$cfs_period" )62  [ "$ncpu" -gt 0 ] || return 163  echo "$ncpu"64}65 66get_cgroup_v1_path() {67  needle=$168  found=69  foundroot=70  mountpoint=71 72  [ -r "/proc/self/mountinfo" ] || return 173  [ -r "/proc/self/cgroup" ] || return 174 75  while IFS= read -r line; do76    case "$needle" in77      "cpuset")78        case "$line" in79          *cpuset*)80            found=$( echo "$line" | cut -d ' ' -f 4,5 )81            break82            ;;83        esac84        ;;85      "cpu")86        case "$line" in87          *cpuset*)88            ;;89          *cpu,cpuacct*|*cpuacct,cpu|*cpuacct*|*cpu*)90            found=$( echo "$line" | cut -d ' ' -f 4,5 )91            break92            ;;93        esac94    esac95  done << __EOF__96$( grep -F -- '- cgroup ' /proc/self/mountinfo )97__EOF__98 99  while IFS= read -r line; do100    controller=$( echo "$line" | cut -d: -f 2 )101    case "$needle" in102      "cpuset")103        case "$controller" in104          cpuset)105            mountpoint=$( echo "$line" | cut -d: -f 3 )106            break107            ;;108        esac109        ;;110      "cpu")111        case "$controller" in112          cpu,cpuacct|cpuacct,cpu|cpuacct|cpu)113            mountpoint=$( echo "$line" | cut -d: -f 3 )114            break115            ;;116        esac117        ;;118    esac119done << __EOF__120$( grep -F -- 'cpu' /proc/self/cgroup )121__EOF__122 123  case "${found%% *}" in124    "/")125      foundroot="${found##* }$mountpoint"126      ;;127    "$mountpoint")128      foundroot="${found##* }"129      ;;130  esac131  echo "$foundroot"132}133 134get_cgroup_v2_path() {135  found=136  foundroot=137  mountpoint=138 139  [ -r "/proc/self/mountinfo" ] || return 1140  [ -r "/proc/self/cgroup" ] || return 1141 142  while IFS= read -r line; do143    found=$( echo "$line" | cut -d ' ' -f 4,5 )144  done << __EOF__145$( grep -F -- '- cgroup2 ' /proc/self/mountinfo )146__EOF__147 148  while IFS= read -r line; do149    mountpoint=$( echo "$line" | cut -d: -f 3 )150done << __EOF__151$( grep -F -- '0::' /proc/self/cgroup )152__EOF__153 154  case "${found%% *}" in155    "")156      return 1157      ;;158    "/")159      foundroot="${found##* }$mountpoint"160      ;;161    "$mountpoint")162      foundroot="${found##* }"163      ;;164  esac165  echo "$foundroot"166}167 168ncpu_online=$( getconf _NPROCESSORS_ONLN )169ncpu_cpuset=170ncpu_quota=171ncpu_cpuset_v2=172ncpu_quota_v2=173 174cpuset=$( get_cgroup_v1_path "cpuset" ) && ncpu_cpuset=$( get_cpuset "$cpuset" "cpuset.effective_cpus" ) || ncpu_cpuset=$ncpu_online175cpu=$( get_cgroup_v1_path "cpu" ) && ncpu_quota=$( get_quota "$cpu" ) || ncpu_quota=$ncpu_online176cgroup_v2=$( get_cgroup_v2_path ) && ncpu_cpuset_v2=$( get_cpuset "$cgroup_v2" "cpuset.cpus.effective" ) || ncpu_cpuset_v2=$ncpu_online177cgroup_v2=$( get_cgroup_v2_path ) && ncpu_quota_v2=$( get_quota_v2 "$cgroup_v2" ) || ncpu_quota_v2=$ncpu_online178 179ncpu=$( printf "%s\n%s\n%s\n%s\n%s\n" \180               "$ncpu_online" \181               "$ncpu_cpuset" \182               "$ncpu_quota" \183               "$ncpu_cpuset_v2" \184               "$ncpu_quota_v2" \185               | sort -n \186               | head -n 1 )187 188sed -i.bak -r 's/^(worker_processes)(.*)$/# Commented out by '"$ME"' on '"$(date)"'\n#\1\2\n\1 '"$ncpu"';/' /etc/nginx/nginx.conf