Увеличение производительности Ubuntu с помощью sysctl

Опубликовано:

Sysctl предоставляет нам интерфейс, который позволяет изучить и изменить несколько сотен параметров ядра в Linux или BSD. Изменения вступают в силу немедленно, и даже есть способ сделать так, чтобы они сохранялись и после перезагрузки. Sysctl используется и для изменения параметров ядра во время его работы. Параметры доступны и перечислены в каталоге /proc/sys/. Сам каталог /proc представляет из себя виртуальную файловую систему procfs позволяющую получить доступ к информации о системных процессах непосредственно из ядра. Поскольку procfs является виртуальной файловой системой, она не использует в своей работе никаких накопителей данных и её действие ограничивается только оперативной памятью. Procfs помимо GNU/Linux также поддерживается такими операционными системами как: Solaris, BSD, QNX, IBM AIX. Вы можете использовать команду sysctl как для чтения так и записи. Говоря короче команда sysctl используется для просмотра текущих параметров ядра и их корректировки.

Внимание!!! Неверное изменение файла sysctl.conf может нарушить работу вашей систем.

Итак, все параметры хранятся в файле /etc/sysctl.conf, его-то и будем редактировать. Для начала сделаем его бэкап следующей командой:

cp /etc/sysctl.conf   /etc/sysctl.conf.back

Открываем файл для редактирования:

sudo gedit /etc/sysctl.conf

Если на вашей машине установлено более 512 Мб оперативной памяти, добавляем следующие строки.

 kernel.sem = 250 32000 100 128
 kernel.shmall = 2097152
 kernel.shmmax = 2147483648
 kernel.shmmni = 4096
 fs.file-max = 65536
 vm.swappiness = 1
 vm.vfs_cache_pressure = 50 

Если ширина вашего канала около 10Mbps, можно добавить следующие параметры:

net.core.rmem_max = 16777216
 net.core.wmem_max = 16777216
 net.ipv4.tcp_rmem = 4096 87380 16777216
 net.ipv4.tcp_wmem = 4096 65536 16777216
 net.ipv4.tcp_no_metrics_save = 1 

Игнорировать фальшивые ошибки ICMP

net.ipv4.icmp_ignore_bogus_error_responses = 1 

Не принимать пересылку ICMP

net.ipv4.conf.all.accept_redirects = 0                              
net.ipv6.conf.all.accept_redirects = 0

Принимать пересылку ICMP только от шлюзов, перечисленных в нашем листе шлюзов:

net.ipv4.conf.all.secure_redirects = 1

Не отправлять пересылку ICMP (мы не роутер):

net.ipv4.conf.all.send_redirects = 0

Не принимать IP источника маршрута пакетов (мы не роутер):

net.ipv4.conf.all.accept_source_route = 0                           
net.ipv6.conf.all.accept_source_route = 0 

Если вы используете Wifi или 3.5G-модем, впишите следующие строки:

net.core.rmem_default = 524288
 net.core.rmem_max = 524288
 net.core.wmem_default = 524288
 net.core.wmem_max = 524288
 net.ipv4.tcp_wmem = 4096 87380 524288
 net.ipv4.tcp_rmem = 4096 87380 524288
 net.ipv4.tcp_mem = 524288 524288 524288
 net.ipv4.tcp_rfc1337 = 1
 net.ipv4.ip_no_pmtu_disc = 0
 net.ipv4.tcp_sack = 1
 net.ipv4.tcp_fack = 1
 net.ipv4.tcp_window_scaling = 1
 net.ipv4.tcp_timestamps = 1
 net.ipv4.tcp_ecn = 0
 net.ipv4.route.flush = 1 

Для предотвращения SYN-атак добавляем:

net.ipv4.tcp_syncookies = 1
 net.ipv4.tcp_max_syn_backlog = 2048
 net.ipv4.tcp_synack_retries = 2

Игнорировать ICPM-трафик:

net.ipv4.icmp_echo_ignore_broadcasts = 1

Вести лог марсианских пакетов:

net.ipv4.conf.all.log_martians = 1

Если вы хотите отключить пересылку пакетов:

net.ipv4.ip_forward=0

Для увеличения максимального числа открытых файлов используйте следующие настройки:

fs.file-max = 100000 

Разрешить пересылку пакетов по ip4 и ip6:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

 

Отключить низкоуровневые сообщения в консоли:

kernel.printk = 4 4 1 7 

Включить защиту от spoof-атак:

net.ipv4.conf.default.rp_filter=1                                             
net.ipv4.conf.all.rp_filter=1 

Далее сохраняем изменения и выходим из редактора. Для применения изменений «на лету»даём команду:

sudo sysctl -p

 

Понравилась статья, расскажи о ней друзьям, нажми кнопку!