Как предотвратить тайм-аут соединения TCP когда большой файл FTP'ing?

Я начал свою профессиональную карьеру как программиста. Мой градус находится в Компьютерных Информационных системах, и я был все установлен быть прикладным программистом. В моем первом задании из колледжа я делал стандартную младшую разработку уровня - QA, тестирование, сценарии, преобразование проектов между языками, программирование веб-сайтов, и т.д. Затем это оказалось парнем, компания, нанятая, чтобы быть системным администратором, соответствует программированию/нуждам развития лучше, чем я сделал (им действительно был нужен высокоуровневый человек), и я хорошо подходил для системного администрирования. В конце концов, я делал это в течение многих лет как хобби так или иначе, и я предпочел, чтобы это кодировало.

За эти годы я был, прежде всего, системным администратором с тех пор, хотя в прошлом году, я видел, что моя должностная роль возвращается к программированию. Много QA и приемочных испытаний со средствами автоматизации, из-за управления конфигурацией. Каждая книга я считал в системе adminstration арфы на автоматизации. Необходимо автоматизировать любую задачу, которую Вы делаете несколько раз, говорят они. Это верно. Автоматизация, конечно, требует... программирования.

Так, я думаю, что Вы могли бы совершить полный оборот.

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

Например, Марионетка действительно повредила пространство системного администратора путем обеспечения превосходного средства автоматизации к основному использованию. Несомненно, cfengine был вокруг некоторое время, но даже за 10 лет системного администрирования, я никогда не касался его. Вместо этого как многие другие системные администраторы, я починил свои собственные инструменты из различных сценариев связующего звена и компонентов. Новый инструмент, Шеф-повар, является еще большим прорывом, потому что он предлагает не только декларативный язык конфигурации, но и УСПОКОИТЕЛЬНЫЙ API, с которым можно программировать узлы и ресурсы.

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

Плюс я нахожу это намного большим количеством забавы, чем установка и настройка Nagios ;).

8
задан 17 November 2009 в 07:44
6 ответов

Для поиска и устранения неисправностей целей попытайтесь загрузить тот же файл через wget или curl. Я подозреваю, что PEra корректен, команды NOOP предотвратят это, и возможно wget, или завихрение отправило бы их.

2
ответ дан 2 December 2019 в 22:52
  • 1
    Спасибо за большое предложение... По-видимому, завихрение было конкретно исправлено с этой целью ( sourceforge.net/tracker/… )... I' m собирающийся пробовать это теперь. –  Alex R 21 November 2009 в 19:35
  • 2
    Хорошо. Протестированный успешно с 6 большими файлами. Это - фиксация, которая наконец сделала это. завихрение имеет опцию проверки активности, в которой испытывает недостаток ncftpget. Я don' t имеют достаточно времени к возврату мои другие изменения и перетест, таким образом, я don' t знают, работает ли эта фиксация в изоляции или только в сочетании с материалом/proc/sys/net/ipv4/tcp_keepalive_* от Michael Graff. –  Alex R 21 November 2009 в 21:13
  • 3
    Мне никогда не приходило в голову, что завихрение имело функции ftp или что это могло бы быть больше завершенное, чем ncftpget (ncftpget, был вокруг в течение 15-20 лет?). Так I' m собирающийся утверждать это как лучший ответ, так как это решило проблему, даже при том, что я don' t знают 100%, если это - то, что сделало это отдельно. –  Alex R 21 November 2009 в 21:15
  • 4
    Довольный, который работал на Вас! –  Josh 22 November 2009 в 16:53

При прохождении через NAT возможности являются таймерами NAT, разъединяют Вас. Я вижу это из гостиничных номеров, где мне ssh в машину и не удается сделать что-то в течение некоторого времени (всего 5 минут иногда!)

# echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time
# echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl
# echo 20 > /proc/sys/net/ipv4/tcp_keepalive_probes

Попробуйте их. Это заставит проверку активности быть отправленной на всех потоках TCP один раз в минуту независимо от действия по сокету.

Обратите внимание, что клиент ftp не может на самом деле ИСПОЛЬЗОВАТЬ сообщения проверки активности. Это - что-то, что должно запросить приложение. Если бы это перестало работать, возможно, устанавливание другого клиента FTP работало бы лучше. Клиент NetBSD FTP (lukemftp) может быть доступным, и является лучшей командной строкой клиент FTP, который я видел до настоящего времени.

Также возможно, что удаленный конец закрывает соединение из-за неактивности. Если это, это имеет скорее поврежденную идею действительности. Если эти взломы проверки активности TCP выше не фиксируют его, ни один, которого клиент должен будет периодически отправлять некоторой команде (NOOP, и т.д.), или администраторы FTP-сервера должны будут изменить свой конец.

6
ответ дан 2 December 2019 в 22:52
  • 1
    I' m пробующий это прямо сейчас. Между тем документация отбрасывает меня немного... в tldp.org/HOWTO/TCP-Keepalive-HOWTO/usingkeepalive.html , говорит она " Помните, что поддержка проверки активности, даже если настроенный в ядре, не является поведением по умолчанию в Linux. Программы должны запросить управление проверкой активности на свои сокеты с помощью интерфейса " setsockopt; это означает, что у меня должен быть измененный клиент FTP, в дополнение к выполнению вышеупомянутого? Во всяком случае, независимо от ответа, I' ll пробуют его. –  Alex R 16 November 2009 в 01:02
  • 2
    Я сделал 2 теста, и все успешно выполнились после применения этого изменения. Я должен попытаться еще несколько раз удостовериться it' s не случайный шанс. –  Alex R 16 November 2009 в 01:22
  • 3
    Я полагаю, что документация на той странице довольно стара. Обратите внимание что я don' t на самом деле ЗАПУСКАЕТ Linux, и при этом у меня нет NAT, который делает этот вид легко доступного тайм-аута. Это - просто очень общая ситуация, и мой ноутбук имеет ее в/etc/sysctl.conf поэтому. Тем файлом является вероятный конкретный NetBSD. –  Michael Graff 16 November 2009 в 01:29
  • 4
    BTW, если это работает, it' s любой Ваш локальный NAT " router" поле (не Ваш NAT на базе Windows для Вашего VM) или что-то на удаленном конце, который уничтожал соединение управления. –  Michael Graff 16 November 2009 в 02:48
  • 5
    Интересные результаты. Хотя это теперь работает, как правило, я ВСЕ ЕЩЕ иногда получаю ту же старую ошибку! –  Alex R 17 November 2009 в 07:02

Это могло возможно быть любое устройство фильтрации на пути между Вашим VM и FTP-сервером. Большинство брандмауэров (включая домашние маршрутизаторы) имеет таблицу состояния, где неактивные сеансы TCP сбрасываются после определенного тайм-аута.

Вы могли изменить NIC VMs на режим моста (вместо NAT) для разбираний в хосте ОС. Затем удостоверьтесь, что Ваш клиент FTP отправляет команды NOOP периодически для хранения канала команды открытым. Существуют брандмауэры, вокруг которых близко передача данных, если они видят, что сеанс команды закрыт. Независимо, если передача данных является неактивным или несущим трафиком...

HTH,
PEra

3
ответ дан 2 December 2019 в 22:52
  • 1
    Спасибо за предложения. Я переключился от NAT до Соединенного мостом, но получил те же результаты. Можно ли сказать мне больше об этих командах NOOP? Я должен кодировать клиент FTP с нуля (использующий Perl или что-то) для получения их? Я проверил ncftpget руководство и didn' t видят что-либо там. –  Alex R 15 November 2009 в 23:46
  • 2
    NOOP-команда состоит просто в том, что, она ничего не делает. It' s периодически отправляют клиентом FTP, чтобы препятствовать тому, чтобы канал команды испытал таймаут. Обычно it' s назвал что-то как " keepalive" в любом клиентском программном обеспечении. –  PEra 18 November 2009 в 23:06
  • 3
    +1, NOOP является способом пойти. It' s возможный ncftpget doesn' t делают их. –  Josh 20 November 2009 в 15:07
  • 4
    Спасибо за идею; другая отвечающая сторона предложила фактический инструмент (завихрение), которое реализует это. –  Alex R 21 November 2009 в 21:16

При выполнении этого из командной строки попытайтесь включить 'хеш' ('двоичный файл' - другой, я всегда включаю). Это может генерировать достаточно трафика на порте управления, чтобы помешать ему испытывать таймаут.

2
ответ дан 2 December 2019 в 22:52
  • 1
    Знаки "диез" отправляются сервером по соединению управления? Это - умное обходное решение! I' ll должны преобразовать от ncftpget до регулярного ftp для попытки этого. –  Alex R 17 November 2009 в 07:05
  • 2
    Я просто посмотрел на источник для Клиента FTP GNU (от Inetutils ftp.gnu.org/gnu/inetutils), к сожалению, кажется, что хеши печатаются локально клиентом, таким образом, они don' t делают что-либо, чтобы помешать соединению управления идти неактивное :( –  Alex R 17 November 2009 в 07:15
  • 3
    Это может быть отказом клиента FTP затем не отправка надлежащих сообщений проверки активности на порте команды. Попытаться использовать различные клиенты, возможно? И/или используйте Wireshark для наблюдения то, что происходит на проводе. –  Peter 17 November 2009 в 18:41
  • 4
    умное, подлое решение –  Tim Williscroft 20 November 2009 в 02:19
  • 5
    этот " solution" только принятие желаемого за действительное... это doesn' t работа и быстрый обзор исходного кода ftp показывает почему. –  Alex R 21 November 2009 в 21:16

FTP использует два сокета - один для управления, и один для данных.

Вероятно, что это - таблицы состояния NAT на VM, которые вызывают таймаут соединения управления из-за неактивности на том сокете.

Вы можете обходить это путем включения "Активного FTP" в системе VM, которая, надо надеяться, заставит VMware активно наблюдать за сеансами FTP и поддерживать сокет управления, пока данные все еще текут.

1
ответ дан 2 December 2019 в 22:52
  • 1
    Необычный совет? Активный FTP намного более трудно взяться за работу с NAT. –  Alex R 15 November 2009 в 12:24
  • 2
    Да, возможно необычный, но это мог бы быть единственный способ заставить VMware на самом деле сотрудничать с FTP. –  Alnitak 15 November 2009 в 13:11
  • 3
    Я попробовал его сейчас (использующий ncftpget-E для принуждения Активного режима). Поведение неизменно..., передача продолжается в течение нескольких минут и затем умирает в конце с той же ошибкой. –  Alex R 15 November 2009 в 18:42
  • 4
    о, хорошо это стоило попытки. Некоторый другой метод для хранения соединения TCP активным (например, команда NOOP) будет требоваться. –  Alnitak 15 November 2009 в 23:38

Если FTP-сервером является Vista goto свойства FTP-сайта, и увеличьте тайм-аут с 15 минут (значение по умолчанию). Насколько большой файл, который Вы пытаетесь передать?

0
ответ дан 2 December 2019 в 22:52
  • 1
    It' s клиент, который испытывает таймаут. I' m не бесспорный у него есть доступ к стороне сервера; если бы он сделал, то он мог бы использовать что-то другое, чем FTP и просто избежать путаницы. –  Michael Graff 16 November 2009 в 18:21
  • 2
    Прямо на, Michael. Если бы это был мой сервер, то это выполнило бы sshd. –  Alex R 17 November 2009 в 07:08

Теги

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