Fork me on GitHub

Оптимизация сервера, или ковыряние sysctl

Параметры sysctl

Параметры, отвечающие за dirty pages — данные, которые нужно записать на диск или отправить в swap

Параметры значат:

vm.dirty_background_ratio — процент системной памяти, который можно заполнить dirty pages до того, как фоновые процессы pdflush/flush/kdmflush запишут их на диск;
vm.dirty_ratio — максимальный объем системной памяти, которую можно заполнить dirty pages;
vm.dirty_background_bytes два предыдущих пункта, только в байтах; параметры взаимозаменяемы;
vm.dirty_bytes — два предыдущих пункта, только в байтах; параметры взаимозаменяемы;
vm.dirty_expire_centisecs — время, которое данные могут храниться в кэше, в нашем случае 30 с;
vm.dirty_writeback_centisecs — как часто процессы pdflush/flush/kdmflush проверяют кэш.

Количество данных, которые ожидают записи можно просмотреть так:

1
2
3
4
5
6
cat /proc/vmstat | egrep "dirty|writeback"

nr_dirty 1319
nr_writeback 0
nr_writeback_temp 0
# 1319 "грязных" страниц ожидает записи

Чтобы уменьшить размер кэша для уменьшения вероятности потери важных данных при сбое и минимизации возможных задержек записи/чтения необходимо отредактировать параметры vm.dirty_background_ratio и vm.dirty_ratio:

1
2
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

Значения записываются sysctl.conf

IPv6

Смешанная среда IPv4/IPv6 может вносить сбои в работу подключенных к Сети программ из-за непреднамеренного взаимодействия протоколов. К примеру при неудачной попытке подключения apt или ssh к сети IPv6, несовместимости устройств.

Для отключения IPv6 нужно выполнить:

1
sudo sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'

Временное отключение IPv6 на всех интерфейсах

А для перманентного отключения протокола нужно отредактировать файл /etc/sysctl.conf:

Отключение на всех интерфейсах

1
net.ipv6.conf.all.disable_ipv6 = 1

Отключение на определенном интерфейсе

1
net.ipv6.conf.eth0.disable_ipv6 = 1

Для применения новых параметров достаточно ввести sudo sysctl -p /etc/sysctl.conf

Comments