87 lines
2.6 KiB
Bash
87 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# System-tune-up to remove system software restrictions on a huge load of connections.
|
|
# Be aware that hardware/infrastructure resources are the most common limiters.
|
|
#
|
|
# SwITNet Ltd © - 2021, https://switnet.net/
|
|
# GPLv3 or later.
|
|
|
|
#Check if user is root
|
|
if ! [ $(id -u) = 0 ]; then
|
|
echo "You need to be root or have privileges!"
|
|
exit 0
|
|
fi
|
|
|
|
while getopts m: option
|
|
do
|
|
case "${option}"
|
|
in
|
|
m) MODE=${OPTARG};;
|
|
\?) echo "Usage: sudo ./jms-stu.sh [-m debug]" && exit;;
|
|
esac
|
|
done
|
|
|
|
echo '
|
|
#--------------------------------------------------
|
|
# Starting system tune up configuration
|
|
# for high performance
|
|
#--------------------------------------------------
|
|
'
|
|
|
|
#DEBUG
|
|
if [ "$MODE" = "debug" ]; then
|
|
set -x
|
|
fi
|
|
|
|
set_once() {
|
|
if [ -z "$(awk '!/^ *#/ && NF {print}' "$2"|grep $(echo $1|awk -F '=' '{print$1}'))" ]; then
|
|
echo "Setting "$1" on "$2"..."
|
|
echo "$1" | tee -a "$2"
|
|
else
|
|
echo " \"$(echo $1|awk -F '=' '{print$1}')\" seems present, skipping setting this variable"
|
|
fi
|
|
}
|
|
FSTAB=/etc/fstab
|
|
|
|
##Disable swap
|
|
swapoff -a
|
|
sed -r '/\sswap\s/s/^#?/#/' -i $FSTAB
|
|
|
|
##Alternative swap tuning (need more documentation).
|
|
#vm.swappiness=5
|
|
#vm.vfs_cache_pressure=50
|
|
|
|
##Kernel
|
|
#https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/tuning_and_optimizing_red_hat_enterprise_linux_for_oracle_9i_and_10g_databases/sect-oracle_9i_and_10g_tuning_guide-adjusting_network_settings-changing_network_kernel_settings
|
|
sysctl -w net.core.rmem_default=262144
|
|
sysctl -w net.core.wmem_default=262144
|
|
sysctl -w net.core.rmem_max=262144
|
|
sysctl -w net.core.wmem_max=262144
|
|
set_once "net.core.rmem_default=262144" "/etc/sysctl.conf"
|
|
set_once "net.core.wmem_default=262144" "/etc/sysctl.conf"
|
|
set_once "net.core.rmem_max=262144" "/etc/sysctl.conf"
|
|
set_once "net.core.wmem_max=262144" "/etc/sysctl.conf"
|
|
|
|
#system
|
|
#https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart
|
|
set_once "DefaultLimitNOFILE=65000" "/etc/sysctl.conf"
|
|
set_once "DefaultLimitNPROC=65000" "/etc/sysctl.conf"
|
|
set_once "DefaultTasksMax=65000" "/etc/sysctl.conf"
|
|
|
|
#https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_for_real_time/7/html/tuning_guide/reduce_tcp_performance_spikes
|
|
sysctl -w net.ipv4.tcp_timestamps=0
|
|
set_once "net.ipv4.tcp_timestamps=0" "/etc/sysctl.conf"
|
|
|
|
#https://bugzilla.redhat.com/show_bug.cgi?id=1283676
|
|
sysctl -w net.core.netdev_max_backlog=100000
|
|
set_once "net.core.netdev_max_backlog=100000" "/etc/sysctl.conf"
|
|
|
|
##nginx
|
|
sed -i "s|worker_connections.*|worker_connections 2000;|" /etc/nginx/nginx.conf
|
|
nginx -t
|
|
|
|
#Missing docs
|
|
#sysctl -w net.ipv4.tcp_low_latency=1
|
|
|
|
echo "System tune up...
|
|
Done!"
|