Активные опции, не работающие над Linux для исходящего соединения

Если бы Ваш фронтэнд является единственным веб-сервером, я был бы склонен подвергать сомнению преимущество наличия двух серверов баз данных.

Однако зеркальное отражение базы данных является другой технологией, доступной Вам в SQL 2005 SP1, который решил бы это. Это действительно требует, чтобы Ваша база данных была в полной модели восстановления, все же. Можно также использовать его для получения некоторого автоматизированного дублирования, если основное устройство перестало работать.

8
задан 8 December 2011 в 23:06
2 ответа

Сначала вам нужно убедиться, что поддержка активности TCP включена в вашей системе. Вы можете проверить настройки по умолчанию следующим образом:

# sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_probes net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75

Затем убедитесь, что вы правильно устанавливаете их в своем коде. Это должно выглядеть примерно так:

int optval = 1;
if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &optval, sizeof(optval)) < 0) {
    perror("setsockopt()");
    close(s);
    exit(EXIT_FAILURE);
}

В моей системе, когда я использую приведенный выше код для установки SO_KEEPALIVE с обеих сторон, я вижу:

tcp        0      0 127.0.0.1:48591         127.0.0.1:5555          ESTABLISHED keepalive (6958.37/0/0)
tcp        0      0 127.0.0.1:5555          127.0.0.1:48591         ESTABLISHED keepalive (6958.37/0/0)

А затем я проверил с помощью wirehark, что сообщение keepalive NOP было отправлено .

Более подробную информацию можно найти в TCP Keepalive HOWTO .

7
ответ дан 2 December 2019 в 23:03

параметр-sysctl-клиента:

sudo /sbin/sysctl -a|grep keep
net.ipv4.tcp_keepalive_time = 20
net.ipv4.tcp_keepalive_probes = 1
net.ipv4.tcp_keepalive_intvl = 1

клиент сохраняет tcpdump :

sudo /usr/sbin/tcpdump  -nn -vv -i bond0 tcp and host 10.201.126.72 and port 8001
tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes

, но не захват любого пакета ,, что означает, что tcp_keepalive_time не работает

0
ответ дан 2 December 2019 в 23:03

Теги

Похожие вопросы