Назад | Перейти на главную страницу

Сервер становится недоступным и восстанавливается самостоятельно (скорее всего, проблема с сетью)

У меня странная проблема с сервером, который я сижу на своем рабочем месте (он находится за NAT, если это важно). Проблема в том, что в некоторых случаях он становится недоступным, а затем снова появляется снова, обычно в течение нескольких секунд, иногда длящегося до 1 минуты. Не перезагружается, не вылетает. Это просто становится недоступным. В течение этого времени я не могу подключиться к нему по ssh и не могу получить доступ к каким-либо приложениям, работающим на машине (на нем запущено несколько приложений Rails, поэтому они также становятся недоступными). Я проверил dmesg и увидел эти строки -

[    4.958074] ADDRCONF(NETDEV_UP): eth0: link is not ready
[    5.040476] ADDRCONF(NETDEV_UP): eth1: link is not ready
[    5.175624] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[    5.177207] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Пару строк спустя я вижу нечто подобное в отношении сетевых интерфейсов -

[1195777.544167] igb: eth0 NIC Link is Down
[1195780.962943] igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX

Похоже, проблема в сети. / var / log / messages ничего интересного не показывает. Я не знаю, как это отладить. Есть какие-нибудь подсказки относительно того, что это могло быть? И что я здесь должен проверять? Спасибо!

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

Это может быть плохой кабель между сетевой картой и маршрутизатором. Мои первые шаги (выполняемые по одному):

  • Замените кабель, подключенный к eth0, и посмотрите, решит ли это проблему.
  • Перенастройте сетевые интерфейсы так, чтобы текущий трафик на eth0 был на eth1 и наоборот. (Требуется перезапуск сети и замена кабеля.) Если проблема исчезнет, ​​то это похоже на отказавший сетевой адаптер.
  • Проверьте состояние вышестоящего устройства и его источника питания. Если он теряет питание или выходит из строя, вы можете увидеть такое поведение.
  • Бегать netstat -i или ifconfig и проверьте количество ошибок. Обычно они должны быть 0 или однозначными. Большое количество ошибок несущей или кадра может указывать на несоответствие дуплексного режима. Несоответствие дуплексного режима можно проверить, загрузив, а затем загрузив большой файл. Большая разница в скорости, сопровождаемая увеличением количества ошибок, указывает на несоответствие канала. Кабельные модемы обычно имеют разную пропускную способность для загрузки и выгрузки, поэтому для этого теста лучше подходят локальные передачи.

Я использую один инструмент: mtr. Я использую такую ​​команду, как mtr -i 15 -n google.com для контроля подключения. Рассмотрите возможность использования одного из серверов вашего интернет-провайдера вместо google.com. Его можно запускать в режиме отчета в пакетном режиме. Если проблема связана с вышестоящим сервером, выходные данные должны помочь определить, где возникла проблема.

У BillThor есть несколько отличных предложений. Если ни одно из его решений не решит проблему, возможно, виновато автосогласование (хотя маловероятно). Попробуйте установить скорость и дуплекс соединения (инструкции для RedHat, но другие дистрибутивы похожи)

Отредактируйте / etc / sysconfig / network-scripts / ifcfg-eth0:

ETHTOOL_OPTS="speed 100 duplex full autoneg off"

Затем перезапустите интерфейс:

/etc/init.d/network restart