![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
Стоит задача раздавать файлы через http, но при этом должно быть так "Один Линк" => "Один Пользователь" я это реализовал в модуле HTTP::DownloadLimit . Вкратце скачка осуществляется по такой схеме:
Тестировал я на Apache 2.2 и все было хорошо, но стала задача перейти на LigHTTPD и при использовании своего модуля процесс LigHTTPD потребляет при одном клиенте 16-25 % CPU, а ОЗУ так это вообще всю, такое впечатление что когда работает сценарий и те байты который он отдает клиенту помещаются в ОЗУ и там остаются. Далее настает светлый момент когда сервер падает без записей в логах. *Пробывал изменять буффер в read() и это положительного результата не дало. *Проблему с потреблением ресурсов хорошо решает Time::HiRes "sleep" помещая ее в блок while, но разве это коректно? Она же приостонавливает весь сценарий...Этот вариант мне не шибко нравиться, но он работает. *Может как то сделать чтения кусками? при помощи seek() + временные файлы? но будет ли тут скорость и меньше нагрузка? ps: OS FreeBSD, Файла размером до 9Gb pps: помогите с решением проблемы. Это сообщение отредактировал(а) n4n0bit - 19.11.2008, 18:27 |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Может попробывать вынести из цикла my buf
|
|||
|
||||
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
Нет (
|
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Отключить буферизацию у FH
|
|||
|
||||
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
Это тож пробывал - не помогает. единственное что буффер подобрал 32768 при этом если читать локально без сервера и выводить на STDOUT CPU жрет уже до 8% ( FreeBSD/ufs ) а в убунте на ext3 2% почему так пока не узнал но явно что та с фс не учел.
Ну а с сервером по прежнему оперативу жрет ( lighttpd ).. ps: продолжаю пока думать в этом плане.. Это сообщение отредактировал(а) n4n0bit - 20.11.2008, 20:39 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
n4n0bit, как Вы используете модуль в lighttpd и как он использовался в Apache?
Не может ли lighttpd целиком кэшировать ответ модуля? Что происходит если отдавать небольшие файлы в несколько мегабайт? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
Всмысле как используется?
Не может ли lighttpd целиком кэшировать ответ модуля? <<< мне кажется что так и происходит. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Ни разу не пользовался lighttpd, он разве умеет выполнять CGI? Поэтому задал вопрос, как используется модуль вместе с lighttpd: через FastCGI или может lighttpd сам умеет perl-модули запускать, как nginx? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
В нем есть mod_cgi
|
|||
|
||||
| n4n0bit |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 19.6.2008 Репутация: 1 Всего: 1 |
Еще раз повторюсь, я использовал Apache 2.2 на котором проблем не было и Lighttpd 1.4.19.
Я попробывал выполнить СИ-шный код под Lighttpd:
Заключение: CGI/ANSI C ОЗУ и CPU в норме. CGI/PERL Пологаю, что mod_cgi плохо работает с PERL при вот такой потоковой раздаче, а именно как бы отправленные байты клиенту еще и кеиширует в ОЗУ, и размер потребляемой памяти одним процессом достигал 1Гб. Процесс использует 25-60% CPU OS FreeBSD 7.0 ps: буду тестировать на др легковесных серверах Это сообщение отредактировал(а) n4n0bit - 26.11.2008, 23:58 |
|||
|
||||
| Usmanec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 24.2.2009 Репутация: нет Всего: нет |
n4n0bit, и не стыдно? Взяли готовый скрипт Daniil Downloader http://softsearch.ru/programs/210-495-dani...-download.shtml, чуть подредактировали и выложили на CPAN в единоличном авторстве.
Это сообщение отредактировал(а) Usmanec - 24.2.2009, 16:12 |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |