nc-limits: autolimits enhancements

This commit is contained in:
nachoparker 2018-06-21 12:28:57 +02:00
parent 9983b7cff9
commit bbb25fa49c
6 changed files with 66 additions and 55 deletions

View File

@ -12,7 +12,7 @@ This code also generates the [NextCloudPi docker images](https://hub.docker.com/
## Features
* Raspbian 9 stretch
* Nextcloud 13.0.2
* Nextcloud 13.0.4
* Apache 2.4.25, with HTTP2 enabled
* PHP 7.0 (double the speed of PHP5!)
* MariaDB 10

View File

@ -5,6 +5,7 @@
## redis provisioning
CFG=/var/www/nextcloud/config/config.php
CONFDIR=/usr/local/etc/ncp-config.d/
REDISPASS="$( grep "^requirepass" /etc/redis/redis.conf | cut -f2 -d' ' )"
### IF redis password is the default one, generate a new one
@ -46,33 +47,12 @@ EOF
sed -i "s|'dbpassword' =>.*|'dbpassword' => '$DBPASSWD',|" "$CFG"
}
## CPU core adjustment
## nc.limits.sh (auto)adjustments: number of threads, memory limits...
CURRENT_THREADS=$( grep "^pm.max_children" /etc/php/7.0/fpm/pool.d/www.conf | awk '{ print $3 }' )
CFG=/usr/local/etc/ncp-config.d/nc-limits.sh
PHPTHREADS=0
[[ -f "$CFG" ]] && PHPTHREADS=$( grep "^PHPTHREADS_" "$CFG" | cut -d= -f2 )
[[ $PHPTHREADS -eq 0 ]] && PHPTHREADS=$( nproc )
[[ $PHPTHREADS -ne $CURRENT_THREADS ]] && {
echo "PHP threads set to $PHPTHREADS"
sed -i "s|pm.max_children =.*|pm.max_children = $PHPTHREADS|" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s|pm.max_spare_servers =.*|pm.max_spare_servers = $PHPTHREADS|" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s|pm.start_servers =.*|pm.start_servers = $PHPTHREADS|" /etc/php/7.0/fpm/pool.d/www.conf
# need to restart php
bash -c " sleep 3
systemctl stop php7.0-fpm
systemctl stop mysqld
sleep 0.5
systemctl start php7.0-fpm
systemctl start mysqld
" &>/dev/null &
}
source /usr/local/etc/library.sh
cd "$CONFDIR" &>/dev/null
activate_script nc-limits.sh
cd - &>/dev/null
## Check for interrupted upgrades and rollback
BKP="$( ls -1t /var/www/nextcloud-bkp_*.tar.gz 2>/dev/null | head -1 )"
@ -82,7 +62,6 @@ BKP="$( ls -1t /var/www/nextcloud-bkp_*.tar.gz 2>/dev/null | head -1 )"
}
## Fix permissions on NCP folders. The main reason for this is to make devel docker container work
CONFDIR="/usr/local/etc/ncp-config.d/"
[[ -e $CONFDIR ]] && {
chown -R root:www-data "$CONFDIR"/*
chmod 660 "$CONFDIR"/*

View File

@ -58,7 +58,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
activate_script nc-nextcloud.sh
install_script ncp.sh
activate_script nc-init.sh
install_script post-inst.sh
install_script post-inst.sh
# harden SSH further for Raspbian
sed -i 's|^#PermitRootLogin .*|PermitRootLogin no|' /etc/ssh/sshd_config

View File

@ -1,5 +1,11 @@
[v0.57.9](https://github.com/nextcloud/nextcloudpi/commit/b91d989) (2018-06-20) ncp-web: fix JS docker detection
[v0.57.12](https://github.com/nextcloud/nextcloudpi/commit/b0203ab) (2018-06-21) nc-limits: autolimits enhancements
[v0.57.11](https://github.com/nextcloud/nextcloudpi/commit/038b260) (2018-06-20) letsencrypt: notify of renewals
[v0.57.10](https://github.com/nextcloud/nextcloudpi/commit/88843ab) (2018-06-20) ncp-web: fix JS docker detection
[v0.57.9](https://github.com/nextcloud/nextcloudpi/commit/ad64a4b) (2018-06-21) nc-format-USB: fix when ZRAM active
[v0.57.8 ](https://github.com/nextcloud/nextcloudpi/commit/e63523c) (2018-06-19) docker: adapt wizard

View File

@ -8,38 +8,63 @@
# More at https://ownyourbits.com/2017/03/13/nextcloudpi-gets-nextcloudpi-config/
#
MAXFILESIZE_=2G
MEMORYLIMIT_=768M
MAXFILESIZE_=10G
MEMORYLIMIT_=0
PHPTHREADS_=0
REDISMEM_=3gb
REDISMEM_=0
DESCRIPTION="Configure system limits for NextCloudPi"
INFO="Set PHP threads to 0 in order to use all cores"
INFO="Examples: 200M or 2G. Write 0 for autoconfig"
configure()
{
sed -i "s/post_max_size=.*/post_max_size=$MAXFILESIZE_/" /var/www/nextcloud/.user.ini
sed -i "s/upload_max_filesize=.*/upload_max_filesize=$MAXFILESIZE_/" /var/www/nextcloud/.user.ini
sed -i "s/memory_limit=.*/memory_limit=$MEMORYLIMIT_/" /var/www/nextcloud/.user.ini
# Set auto memory limit to 75% of the total memory
local TOTAL_MEM="$( free | sed -n 2p | awk '{ print $2 }' )"
AUTOMEM=$(( TOTAL_MEM * 75 / 100 ))
# adjust max PHP processes so Apps don't overload the board (#146)
# MAX FILESIZE
local CONF=/var/www/nextcloud/.user.ini
local CURRENT_FILE_SIZE="$( grep "^upload_max_filesize" "$CONF" | sed 's|.*=||' )"
[[ "$MAXFILESIZE_" == "0" ]] && MAXFILESIZE_=10G
# MAX PHP MEMORY
local CONF=/var/www/nextcloud/.user.ini
local CURRENT_PHP_MEM="$( grep "^memory_limit" "$CONF" | sed 's|.*=||' )"
[[ $MEMORYLIMIT_ -eq 0 ]] && MEMORYLIMIT_=$AUTOMEM && echo "Using ${AUTOMEM}B for PHP"
sed -i "s/post_max_size=.*/post_max_size=$MAXFILESIZE_/" "$CONF"
sed -i "s/upload_max_filesize=.*/upload_max_filesize=$MAXFILESIZE_/" "$CONF"
sed -i "s/memory_limit=.*/memory_limit=$MEMORYLIMIT_/" "$CONF"
# MAX PHP THREADS
local CONF=/etc/php/7.0/fpm/pool.d/www.conf
local CURRENT_THREADS=$( grep "^pm.max_children" "$CONF" | awk '{ print $3 }' )
local PHPTHREADS=0
[[ $PHPTHREADS_ -eq 0 ]] && PHPTHREADS_=$( nproc ) && echo "Using $PHPTHREADS_ PHP threads"
sed -i "s|pm.max_children =.*|pm.max_children = $PHPTHREADS_|" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s|pm.max_spare_servers =.*|pm.max_spare_servers = $PHPTHREADS_|" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s|pm.start_servers =.*|pm.start_servers = $PHPTHREADS_|" /etc/php/7.0/fpm/pool.d/www.conf
sed -i "s|pm.max_children =.*|pm.max_children = $PHPTHREADS_|" "$CONF"
sed -i "s|pm.max_spare_servers =.*|pm.max_spare_servers = $PHPTHREADS_|" "$CONF"
sed -i "s|pm.start_servers =.*|pm.start_servers = $PHPTHREADS_|" "$CONF"
# need to restart php
bash -c " sleep 3
service php7.0-fpm stop
service mysql stop
sleep 0.5
service php7.0-fpm start
service mysql start
" &>/dev/null &
# RESTART PHP
[[ $PHPTHREADS -ne $CURRENT_THREADS ]] || \
[[ "$MEMORYLIMIT" != "$CURRENT_PHP_MEM" ]] || \
[[ "$MAXFILESIZE_" != "$CURRENT_FILE_SIZE" ]] && {
bash -c " sleep 3
service php7.0-fpm stop
service mysql stop
sleep 0.5
service php7.0-fpm start
service mysql start
" &>/dev/null &
}
# redis max memory
sed -i "s|maxmemory .*|maxmemory $REDISMEM_|" /etc/redis/redis.conf
service redis restart
local CONF=/etc/redis/redis.conf
local CURRENT_REDIS_MEM=$( grep "^maxmemory" "$CONF" | awk '{ print $2 }' )
[[ $REDISMEM_ -eq 0 ]] && REDISMEM_=$AUTOMEM && echo "Using ${AUTOMEM}B for Redis"
[[ "$REDISMEM_" != "$CURRENT_REDIS_MEM" ]] && {
sed -i "s|maxmemory .*|maxmemory $REDISMEM_|" "$CONF"
service redis restart
}
}
install() { :; }

View File

@ -31,7 +31,11 @@ install()
$APTINSTALL apt-utils cron
$APTINSTALL apache2
$APTINSTALL php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip php7.0-fileinfo php7.0-mcrypt php7.0-ldap
$APTINSTALL php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache \
php7.0-mbstring php7.0-xml php7.0-zip php7.0-fileinfo php7.0-ldap \
php7.0-intl libmagickcore-6.q16-2-extra php7.0-imagick php-mcrypt
mkdir -p /run/php
# Randomize mariaDB password
@ -140,9 +144,6 @@ y
y
y
EOF
# adjust max PHP processes so Apps don't overload the board (#146)
sed -i 's|pm.max_children =.*|pm.max_children = 3|' /etc/php/7.0/fpm/pool.d/www.conf
}
configure() { :; }