Skip to content

Instantly share code, notes, and snippets.

@siennathesane
Created September 4, 2015 20:08
Show Gist options
  • Select an option

  • Save siennathesane/c838a7aa1889ea1bd753 to your computer and use it in GitHub Desktop.

Select an option

Save siennathesane/c838a7aa1889ea1bd753 to your computer and use it in GitHub Desktop.
#! /bin/bash
# Mike Lloyd, used for increasing ring buffers on CentOS/RHEL. To utilise, just have a local servers.txt file.
clear
echo -e "declaring arrays for in-memory storage."
declare -A {rmem_default,rmem_max,wmem_default,wmem_max,optmem_max}
#rmem defaults.
for i in $(cat servers.txt); do
rmem_default[$(echo "$i")]=$(ssh root@$i "cat /proc/sys/net/core/rmem_default")
done
echo -e "\nserver ring memory defaults."
tput sgr0
for i in "${!rmem_default[@]}"; do
echo "server: $i"
echo "ring default: ${rmem_default[$i]}"
done
#rmem maxs
for i in $(cat servers.txt); do
rmem_max[$(echo "$i")]=$(ssh root@$i "cat /proc/sys/net/core/rmem_max")
done
echo -e "\nserver ring memory maximums."
for i in "${!rmem_max[@]}"; do
echo "server: $i"
echo "ring max: ${rmem_max[$i]}"
done
#wmem defaults.
for i in $(cat servers.txt); do
wmem_default[$(echo "$i")]=$(ssh root@$i "cat /proc/sys/net/core/wmem_default")
done
echo -e "\nserver default send buffer size."
for i in "${!wmem_default[@]}"; do
echo "server: $i"
echo "send default: ${wmem_default[$i]}"
done
#mem maxes
for i in $(cat servers.txt); do
wmem_max[$(echo "$i")]=$(ssh root@$i "cat /proc/sys/net/core/wmem_max")
done
echo -e "\nserver max send buffer size."
for i in "${!wmem_max[@]}"; do
echo "server: $i"
echo "send max: ${wmem_max[$i]}"
done
#socket details
for i in $(cat servers.txt); do
optmem_max[$(echo "$i")]=$(ssh root@$i "cat /proc/sys/net/core/optmem_max")
done
echo -e "\nserver option memory buffer size."
for i in "${!optmem_max[@]}"; do
echo "server: $i"
echo "send max: ${optmem_max[$i]}"
done
echo -e "\n\n\nYou have 30 seconds to review the material to verify changes. Press CTRL+C to cancel.\n\n\n"
sleep 30
for i in "${!rmem_max[@]}"; do
echo -e "\nchanging server $i to maximum ring buffer size."
ssh root@$i "sysctl -w net.core.rmem_max=${rmem_max[$i]}"
done
for i in "${!wmem_max[@]}"; do
echo -e "\nchanging server $i to maximum send buffer size."
ssh root@$i "sysctl -w net.core.wmem_max=${wmem_max[$i]}"
done
for i in $(cat servers.txt); do
echo -e "\nflushing route for server $i."
ssh root@$i "sysctl -w net.ipv4.route.flush=1"
#
echo -e "restarting sysctl without reboot on server $i."
ssh root@$i "sysctl -p"
done
echo -e "\nremoving arrays."
unset {rmem_default,rmem_max,wmem_default,wmem_max,optmem_max}
echo -e "verifying new settings."
for i in $(cat servers.txt); do
echo -e "\nserver $i networking:"
ssh root@$i "grep net /etc/sysctl.conf"
done
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment