Увеличение производительности 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