Dicas de Configuração

Opções de configuração para escalar e otimizar o sistema.

Como escalar e otimizar o Metabus?

O Metabus foi projetado para ser totalmente escalável, principalmente por que para realizar uma busca, que não está em cache, é necessário consultar muitas fontes (talvez milhares) em um período de tempo aceitável para um usuário que está acostumado a utilizar mecanismos de busca convêncionais que retornam os resultados em menos de 1 segundo. Dessa forma, quanto mais tarefas possam ser executadas paralelamente, melhor, e ainda, aproveitando todos os recursos disponíveis, sejam recursos de rede ou de processamento.

Para viabilizar essa idéia o Metabus deve ser capaz de:

  1. Utilizar mais de uma rede. Uma vez que a conexão com a internet disponível em um servidor pode não ser rápida o suficiente para consultar todas as fontes em tempo hábil.
  1. Ampliar ao máximo o paralelismo da realização das consultas de maneira escalável. O principal gargalo dessa aplicação é a realização de uma busca em todas as fontes, se o tempo para finalizar essa busca não for aceitável para o usuário, deve existir a possibilidade de adicionar servidores para agilizar as buscas.
  1. Utilizar threads para efetuar cada uma das buscas. A busca realizada em cada uma das fontes não pode ser sequencial dentro de um processo de forma alguma.

Registro de Servidores

O Metabus é escalável no nível de servidores. É possivel adicionar quantos servidores forem necessários para suprir a necessidade de processamento do sistema. Assim, cada servidor pode possuir recursos de rede diferentes e independentes (a utilização de uma rede não influencia na performance da outra) que serão somados e compartilhados como recursos do sistema Metabus.

Para adicionar novos servidores é necessário apenar efetuar o processo de instalaçao do mbserver na nova máquina e cadastrá-lo no mbclient (módulo serverlib), editando o arquivo settings.py e adicionando o IP ou nome do servidor na lista de servidores chamada SERVERS, como no exemplo abaixo:

SERVERS = [
    'http://localhost:9123/',
    'http://200.201.122.32:80/',
]

A identificação do servidor vem seguida da porta que o Metabus esta rodando.

Processo por processador

O Interpretador Python não é capaz de processar mais de uma thread de um mesmo processo e processadores diferentes simultaneamente. Dessa forma, o número que processos é configurável para prover a possibilidade de utilização de todos os processadores disponíveis em um servidor. O número de processos por servidor é normalmente configurado para ser igual ao número de processadores para que cada processo possa ser escalado para um processador ao mesmo tempo.

Para possibilitar essa configuração de número de processos utilizados por servidor foi utilizado o WSGI (http://wsgi.org/) e Apache2 que permitem a configuração de um pool de processos do serviço Metabus. O arquivo de configuração do Apache2, utilizado pelo Metabus, que contém os parametros relativos ao número de processos pode ser encontrado em mbserver/deploy/apache2/etc/apache2/sites-available/mbserver. Segue um trecho desse arquivo:

NameVirtualHost *:9123

<VirtualHost *:9123>
    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel error

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

    WSGIDaemonProcess mbserver user=metabus group=www-data processes=8 threads=1
    WSGIProcessGroup mbserver

    WSGIScriptAlias / /home/metabus/mbserver/mbserver.wsgi
</VirtualHost>

Para alterar o número de processos basta modificar o parametro processes.

Threads de Buscas

Dividir as requisições de buscas em threads é uma maneira de evitar que a execução do sistema fique interrompida enquanto se obtém os resultados de uma pesquisa em uma fonte de busca. Usando threads, as requisições podem ser feitas paralelamente, em outras palavas, é possivel fazer a requisição de uma pesquisa em mais de uma fonte antes que a primeira fonte retorne o resultado da busca.

O número de threads de cada processo também é configurável, o que possibilitará o desenvolvimento de testes automáticos para verificar o número ótimo de threads por processo em cada ambiente. Esse parâmetro pode ser editado no arquivo mbserver/server/settings.py:

THREADS_NUMBER = 10
Última modificação 5 anos atrás Última modificação em 21/03/2013 16:36:56
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.