![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
mantracoder |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.8.2007 Репутация: нет Всего: 1 |
Добрый день!
Экспериментирую со скоростью закачки какого-либо файла посредством сервлета. Код написан на коленке за минут 10, посему качество оного предлагается оставить в стороне от обсуждаемой проблемы. Лимит по скорости грубо задается размером массива, который ссыпается в исходящий поток раз в секунду. Закачка работает правильно, лимит скорости соблюдается. Проблема заключается в том, что в единицу времени доступна только 1 закачка. Т.е. если попытаться открыть второе окно и дернуть нужный линк, то вторая закачка если и появится, то останется в подвешенном состоянии, пока не завершится первая. Третья параллельная попытка закачки не дает даже диалога сохранения, пока не завершится одна из двух предыдущих закачек.
Изначально я думал, что проблема может быть в блокировании ресурса одним из потоков. Однако если убрать из этого кода любое упоминание файлов и потоков, проблема остается. "Соревнуются" первые 2 запроса к сервлету, третий "висит" до окончания одного из двух предыдущих. Где-то мне попадалось на глаза утверждение, что разрешается не более 2 конкурентных запросов к одному и тому же ресурсу с одного IP-адреса. И если это действительно так, то как обойти это ограничение? Это сообщение отредактировал(а) mantracoder - 13.10.2008, 09:01 |
|||
|
||||
skhilkov |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: 2 Всего: 7 |
А может просто попробовать в отдельных потоках сделать раздачу? Ты ведь сервлет усыпляешь слипами (если я правильно понимаю).
Сделай что-нибудь типа (я не компилировал, просто навскидку написал.... так что если ошибки вылезут... я не виноват ))) )
Это сообщение отредактировал(а) skhilkov - 13.10.2008, 10:19 -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
redrick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 547 Регистрация: 7.1.2004 Где: Москва Репутация: нет Всего: 5 |
ну это явно не так: например если мы сидим 100 человек под одним ипишником - мы же можем зайти на один и тот же сайт без проблем. мне кажется дело в порочности sleep(), хотя палюбому сервер должен заводить новый тред для нового запроса -------------------- Имею Мнение Хрен Оспоришь |
|||
|
||||
alexadr |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 25.9.2006 Репутация: нет Всего: 4 |
Я бы посоветовал для начала залогировать каждую строчку сервлета, чтобы понять где толком начинаюца тормоза, - где оно подвисает.
Плюс возможно какие-то проблемы при чтении двумя потоками одного и того же файла(это если в данном случае два клиента скачивают одно и тоже). Ну и ешо конечно sleep надо менять на:
|
|||
|
||||
necromancer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 317 Регистрация: 26.7.2006 Где: Москва Репутация: 6 Всего: 7 |
а может дело в браузере через который дергается закачка? =)
у меня с сервера одновременно льют до 100 потоков и никто не тормозит. А вот браузер может ограничивать кол-во каким либо образом. либо же тормозить может система локально, т.е. загрузка проца на 100% при чтении/записи из потоков не дает времени браузеру обработать 3-й клик. -------------------- С уважением, Виталий Смык ---------------------------------------------------------------------------------------------- SCJP, SCWCD, OCA http://dev.maryno.net/video/ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |