[Cascavel-pm] webcrawler usando Socket

Nilson Santos Figueiredo Junior acid06 em gmail.com
Terça Outubro 18 12:43:00 PDT 2005


On 10/18/05, Alceu R. de Freitas Jr. <glasswalk3r em yahoo.com.br> wrote:
> Eu gostei da sua idéia. Esse "servidor Perl" poderia
> até ser "gordo" e usar LWP sem problemas... só teria
> que gerenciar as requisições dos redirecionadores
> dummy usando fork() ou então threads.

Tem um pequeno problema.
Usando threads ou fork() o consumo só seria menor mas, caso o sistema
fosse ter muitos usuários, possivelmente ainda seria alto. No caso de
threads, o bytecode compilado em memória é compartilhado pelos
threads, mas todas as estruturas de dados são copiadas (de todos os
módulos inclusos), gastando mais memória a cada thread criado. No caso
de fork(), sistemas operacionais *nix costumam implementar o chamado
"copy-on-write" que faz com que a memória de um processo pai seja
compartilhada com a do filho até o momento em que o filho (ou o pai)
escrevem numa posição, nesse ponto cópias são criadas.

Se realmente consumo de memória for uma questão crítica, na
implementação desse servidor você não deveria usar threads ou fork e
fazer todo o gerenciamento de muitos clientes por você mesmo.

> Quanto aos redirecionadores, trabalhar usando IPC
> seria mais interessante ainda (quanto mais simples o
> redirector usado pelo Squid, melhor). Só não sei bem
> qual recurso de IPC usar nesse caso... pipe? Memória
> compartilhada?

Eu usaria sockets mesmo. Costumo gostar de sockets pra tudo e pra
mexer com vários e vários clientes num mesmo processo você pode usar o
IO::Select pra cuidar das coisas pra você. Além de que sockets
costumam ser uma alternativa relativamente fácil de implementar.

Agora... tem um porém meio "filosófico". Você está ciente que você
estaria possivelmente gastando o dobro da banda para cada request, né?
Se você não tomar cuidado, pode até chegar a eliminar os benefícios do
Squid como cache, uma vez que o seu programa não poderá fazer o
request ao Squid senão entraria num loop infinito, creio eu (porque aí
o Squid chamaria de novo o seu redirecionador).

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm