Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> POE, web client, расход памяти 
:(
    Опции темы
Cook
Дата 13.11.2006, 05:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.12.2003

Репутация: нет
Всего: нет



пробую вот такой пример
Код

#!/usr/bin/perl

use warnings;
use strict;

# POE::Component::Client::HTTP uses HTTP::Request and response
# objects.

use HTTP::Request::Common qw(GET POST);

# A list of pages to fetch.  They will be fetched in parallel.  Add
# more sites to see it in action.

my @url_list =
  qw( http://poe.perl.org/misc/test.html
);

# Include POE and the HTTP client component.

use POE qw(Component::Client::HTTP);

# Create a user agent.  It will be referred to as "ua".  It limits
# fetch sizes to 4KB (for testing).  If a connection has not occurred
# after 180 seconds, it gives up.

POE::Component::Client::HTTP->spawn
  ( Alias => 'ua',
    MaxSize => 4096,    # Remove for unlimited page sizes.
    Timeout => 30,
  );

# Create a session for each request.

foreach my $url (@url_list) {

    POE::Session->create
      ( inline_states =>
          { _start => sub {
                my ( $kernel, $heap ) = @_[ KERNEL, HEAP ];

                # Post a request to the HTTP user agent component.  When the
                # component has an answer (positive or negative), it will
                # send back a "got_response" event with an HTTP::Response
                # object.

                $kernel->post( ua => request => got_response => GET $url );
            },

            # A response has arrived.  Display it.

            got_response => sub {
                my ( $heap, $request_packet, $response_packet ) = @_[ HEAP, ARG0, ARG1 ];

                # The original HTTP::Request object.  If several requests
                # were made, this can help match the response back to its
                # request.

                my $http_request = $request_packet->[0];

                # The HTTP::Response object.

                my $http_response = $response_packet->[0];

                # Make the response presentable, and display it.

                print "url=".$http_response->request->uri."\n";
    print "code=".$$http_response{'_rc'}."\n";
    print "msg=".$$http_response{'_msg'}."\n";
            },
          },
      );
}

# Run everything, and exit when it's all done.

$poe_kernel->run();
exit 0;


за исключением того что на входе 1000 урлов, пока не начинаю получать ответы процесс откусывает около 20М памяти, после начала поступления ответов, через некоторое время памяти кушается уже около 90М, причем по завершении всех сессий, после $poe_kernel->run(); это число не уменьшается, отчего и где так много ее кушается, и как с этим бороться ?
учитывая что мне постоянно нужно иметь в работе более 1000 потоков количество расходуемой памяти может до диких цифер вырости...

PM MAIL   Вверх
G0rinich
Дата 30.3.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 21.8.2006

Репутация: нет
Всего: 1



Так вы, батенька, создаете на каждый свой урл POE сессию. 1000 урлов - 1000 РОЕ сессий!
Хватило же вам почему-то ума создать всего одного HTTP клиента )
Можно и НУЖНО обойтись одной сессией. Нагрузка на машину будет очень маленькой.
PM MAIL   Вверх
Nab
Дата 30.3.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 25.3.2006
Где: Kiev

Репутация: 26
Всего: 37



И вообще поиск по форуму рулит, уже который день обсасуем такую же тему...
http://forum.vingrad.ru/s/072046e52791103a...pic-124167.html


--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.