Skip to content

Instantly share code, notes, and snippets.

@yqt
Last active July 2, 2020 09:04
Show Gist options
  • Save yqt/ba9ae1ea2134fdf8d721a15e5c65e68e to your computer and use it in GitHub Desktop.
Save yqt/ba9ae1ea2134fdf8d721a15e5c65e68e to your computer and use it in GitHub Desktop.
#!/bin/bash
## sysctl
init_sysctl() {
cat << EOF > /etc/sysctl.d/local.conf
# max open files
fs.file-max = 1024000
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096
# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = htcp
# forward ipv4
net.ipv4.ip_forward = 1
EOF
sysctl --system
}
## limits
init_limits() {
sed -i 's/# End of file//g' /etc/security/limits.conf
cat << EOF >> /etc/security/limits.conf
* soft nofile 512000
* hard nofile 1024000
# End of file
EOF
cat << EOF >> /etc/profile
ulimit -SHn 1024000
EOF
}
## lotServer
prepare_lotServer() {
# backup apt souce list
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# downgrade kernel
wget -N --no-check-certificate https://moeclub.org/attachment/LinuxShell/Debian_Kernel.sh
apt install ethtool bc
bash Debian_Kernel.sh
# need to reboot and go on with init_lotServer
#sed -i 's/256 2048/512 4096/g' /serverspeeder/etc/config
}
init_lotServer() {
wget -N --no-check-certificate https://git.io/lotServerInstall.sh
bash lotServerInstall.sh install
sed -i 's/256 2048/512 4096/g' /appex/etc/config
sed -i 's/maxmode="0"/maxmode="1"/g' /appex/etc/config
/appex/bin/lotServer.sh restart
}
## check root
check_root() {
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
}
process() {
check_root
echo "init sysctl..."
init_sysctl
echo "done."
echo "init limits..."
init_limits
echo "done."
echo "prepare lotServer..."
prepare_lotServer
echo "done."
echo "please reboot."
}
if [ x$1 != x ]; then
case $1 in
init_lot)
init_lotServer
;;
process)
process
;;
?)
echo "usage: process|init_lot"
;;
esac
else
echo "default action: process"
process
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment