Войти

Показать полную графическую версию : [решено] Проблемы с закачкой на FTP


Skit25
16-05-2012, 08:07
Здравствуйте!
Недавно появилась проблема с закачкой файлов по FTP. Не могу разобраться на что думать.
1. Подозреваемый VirtualBox 4.1.14 r77440
2. FreeBSD 9.0 x32
3. Ftp client: FAR, TotalCommander, FileZilla(пробовал последнюю, бету и ночную версии), CuteFTP

При закачке массы файлов, на некоторых случайных, происходит стопор. filezilla просит перезаписать этот файл с весом = 0, подумав около минуты, FAR пишет, что получает данные, потом пробует восстановить соединение (больше минуты), таки закачивает файл. Так происходит несколько раз. Файлы всегда разные, с разным весом. Если залить около 10-15 файлов, то закачивает моментом, если больше происходит описанный стопор. Один большой файл закачивает без проблем.
Цепляюсь через ip пробросом портов. NAT.

Пробовал:
1. Запускать диск виртуалки с другого HDD, в том числе с SDD.
2. Пробовал конвертить vdi В другой формат.
3. Пробовал создавать диски с разными параметрами (фиксированный, резиновый, vdi, vmdk, hdd...)
4. Пробовал менять сетевое устройство в настройках virtualBox.
5. Пробовал выносить папку TMP, TEMP windows на другой HDD.
6. Пробовал проверку диска в freeBSD, команду уже не помню, но при каждом запуске с разными параметрами выдавала один результат, что фрагментировано 0,01% или 0,1%
7. Пробовал дефрагментировать HDD на котором диск виртуалки.
8. Проверял все HDD с которых запускал виртуальную машину (именно диск) на ошибки, ошибок нет, т.к. винты новые.
9. Искал альтернативу VirtalBox, но проброс портов у аналогичных программ не найден. Платные в расчет не беру.
10. Удалял VIrtalBox и устанавливал снова.
11. Пробовал примонтировать "Общие папки", но как выяснилось для freeBSD, это не реально.
12. Банально, чистил реестры, диски и т.п.
13. Использую коробочный ftp.
14. Сейчас поставил ProFTP, результат тот же.

Работаю штатно, отследить причину такого поведения не могу. Мысль одна, при работе с виртуалкой рубанули питание, но ее развеивает бесперебойник :)
Если производить копирование внутри freeBSD, то ни каких проблем не возникает.

Кстати. FileZilla портит скрипты, тот скрипт на котором "стоянка" обязательно выдаст ошибку. Закачиваю через CuteFTP, который тоже стопорится, но файлы не портит.

Жду, надеюсь. Спасибо!

leonty
16-05-2012, 13:51
первое, что пришло в голову... вообще не понятно, кто хостовая машина, а кто гостевая.
если попробовать с помощью scp копировать, тоже самое?

Skit25
16-05-2012, 18:05
На Windows 7 установлен VirtualBox. Т.е. гостевая freeBSD.
если попробовать с помощью scp копировать, тоже самое?
Как я уже говорил, внутри гостевой freeBSD копирование функционирует прекрасно.

Kent
16-05-2012, 21:09
Поизучайте debug.log и xferlog.

Skit25
17-05-2012, 06:47
Поизучайте debug.log и xferlog. »
debug.log - пустой
xferlog - показывает кто открыл сессию и в какой директории.

leonty
17-05-2012, 08:40
Как я уже говорил, внутри гостевой freeBSD копирование функционирует прекрасно. »
scp имелось ввиду между гостевой и хостовой машинами.

vadblm
17-05-2012, 12:48
FTP за NAT пробрасывать тот ещё геморрой, так что присоединяюсь к предложению воспользоваться SCP/SFTP, благо та же FileZilla умеет этот протокол. Или сделать сеть виртуалке не NAT, а мост.

Skit25
17-05-2012, 16:08
FTP за NAT пробрасывать тот ещё геморрой, так что присоединяюсь к предложению воспользоваться SCP/SFTP, благо та же FileZilla умеет этот протокол. Или сделать сеть виртуалке не NAT, а мост. »
Спасибо! попробую, отпишу.

Skit25
17-05-2012, 16:52
Не ужели я не попробовал???
Точно помню, что "играл" с настройками фтпэшников. Не реально :)

leonty
17-05-2012, 17:25
мало чего понятно из последнего поста)
выкладывайте конфиг Вашего фтп.

vadblm
17-05-2012, 17:32
Не ужели я не попробовал??? »
Вы попробовали много ерунды всякой, преклоняюсь перед вашим упорством, гг.
Но о SFTP ничего не сказано.
Точно помню, что "играл" с настройками фтпэшников. »
SFTP это подсистема OpenSSH и никак не связана с "играми с настройками фтпэшников". Вам пошагово что ли объяснить? Вроде в гугле инфы по этому вопросу навалом, в т.ч. и о том, что в случае NAT нужно пробрасывать всего один порт (общий с SSH) - 22, а не толпу портов FTP.

leonty
18-05-2012, 00:16
Вы попробовали много ерунды всякой, преклоняюсь перед вашим упорством, гг. »
:D
ток я не понял, как проблема решилась? в чем затык был?

Skit25
18-05-2012, 07:45
SFTP это подсистема OpenSSH и никак не связана с "играми с настройками фтпэшников". Вам пошагово что ли объяснить? »
Тип соединения же настраивается в клиенте, а в конфиге ОСи, разрешается, если я правильно понимаю. У меня в конфиге ОСи, разрешено подключение по ftp и ssh, больше никаких настроек практически, только руту разрешил в sshd_config коннектиться, чтобы не вводить по два раза пароли, все равно на локалке... Все остальное по дефолту, proFTP я закоментил, т.к. нет необходимости, пользуюсь коробочным ftp фряхи.
Настройки клиента:
хост: 192.168.137.11
порт: 22
Протокол: SFTP
Тип входа: Нормальный
Все остальное по дефолоту и не влияет на данную проблему (проверено), т.е. в активном или пассивном, с явным указанием сервера или с автоматическим. Так - то вроде много телодвижений действительно, но зато хоть пыль стряхнул с опций :) Благодаря этому обнаружил, что у меня `RAID зеркало` сбросился, т.е. инфа пишется на один винт.

Если вы пошагово объясните я только рад буду ;) С людьми "спецами" разговариваешь, слезы на глаза наворачиваются, я и сам такой, только считаю если взялся за дело, нужно подойти к вопросу основательно, мне не лень изучить в подробностях, то с чем я работаю.

в случае NAT нужно пробрасывать всего один порт (общий с SSH) »
У мне проброшены: 80, 22, 21(видимо теперь не нужен).

Последние эксперименты ставились на CKeditor (638 фалов), в среднем три файла стопорились, секунд через 10-15, все файлы закачивались, оставались три(случайных) по 0 байт прогресса, которые около минуты "думали" и только потом закачивались, причем по очередно.
Кстати filezilla закачивает четыре файла одновременно, пробовал ставить 1,2,3 - не влияет.

Прямо сейчас делаю маленький тест. Одновременно закачивается 4 файла. Папка ckeditor ~7.77Mb, 638 фалов.

Удивительно, но результаты при обычном ftp соединении, явно лучше прежних!
Закачка 11,39 сек. Файл стопорились, но не надолго. Раньше не меньше минуты.
Удаление папки - 1,88 сек. Раньше не меньше минуты.
Конфигурация и железа, и ПО не менялась, запущенные приложения те же: PHPStorm, Skype(снята галка "использовать 443 и 80"), FileZilla, VirtualBox.

Теперь ставлю sftp*22.
Удаление 6,69 сек :) Сейчас дольше, бывало и в миг.
Закачка 6 сек. Бывало и быстрее, не меньше чем вдвое.

По sftp пробую еще, что-то совсем долго.
Вот другое дело, из трех проб.
Удалилась почти за 7 сек, зато закачалась почти за две.

Ну тогда и на ftp*21 еще потестю.
Закачано 30сек.
Удалено 45сек.
При удалении несколько раз лог выдал:
Статус: Отключен от сервера
Это один раз:
Ошибка: Превышено время ожидания соединения
Ошибка: Не могу получить список каталогов!

И вот еще одно чудо, третий раз закачивал папку и у меня аварийно закрылась VirtualBox (Прекращена работа программы). Такое тоже однажды было, забыл упомянуть. При соединении через sftp такое пока не наблюдается.

Вот такие пироги.

Конечно нужно больше тестов, обычно радость приходит раньше времени.

Еще раз спасибо всем за внимание, если нужны еще данные выложу.
Подвиду итог: Проблема решилась переключением протокола в клиенте с ftp*21, на sftp*22. Скоро я снова нагружу фтп, надеюсь ситуация не изменится, пока все работает прекрасно.

leonty
18-05-2012, 09:28
У мне проброшены: 80, 22, 21(видимо теперь не нужен). »
Протокол FTP сначала открывает одиночное соединение, которое называется "сеансом управления FTP" (FTP control session). При выполнении команд в пределах этого сеанса, для передачи сопутствующих данных открываются дополнительные порты. Эти соединения могут быть активными или пассивными. При создании активного соединения клент передает FTP серверу номер порта и IP адрес для соединения. Затем клент открывает порт, сервер подключает к заданному порту клиента свой порт с номером 20 (известный как FTP-Data) и передает данные через установленное соединение.
Пассивный FTP действует противоположным образом. Клиент посылает запрос серверу на получение данных, а сервер возвращает клиенту IP адрес и номер порта для подключения. Клиент подключает свой 20-й порт (FTP-data) к указанному порту сервера и получает запрошенные данные.

(с)http://www.opennet.ru/docs/RUS/iptables/




© OSzone.net 2001-2012