OTIMIZAÇÃO DE DESEMPENHO EM AMBIENTES WEB: UMA ABORDAGEM
BASEADA EM MONITORAMENTO, CARACTERIZAÇÃO DA CARGA DE TRABALHO
E AJUSTE DE PARÂMETROS ARQUITETURAIS
Carlos Augusto P.S. Martins
Pontifícia Universidade Católica de Minas Gerais
[email protected]
João Paulo Coelho Furtado
Faculdade Infórium de Tecnologia - FIT
[email protected]
Marcílio Jr. de Andrade
Pontifícia Universidade Católica de Minas Gerais
[email protected]
Resumo:
A crescente necessidade de otimização de desempenho em ambientes web abre
espaço para uma enorme variedade de técnicas de otimização. Nesse artigo,
apresenta-se um estudo de caso real onde foi utilizada uma abordagem baseada em
monitoramento de indicadores de desempenho e caracterização de carga de trabalho
no intuito de evidenciar o comportamento geral do ambiente possibilitando a realização
de ajustes de parâmetros arquiteturais. Os resultados iniciais apresentados evidenciam
muitos dos benefícios de desempenho trazidos por esse tipo de implementação.
1. Introdução
A crescente utilização da rede mundial de computadores, conforme mostrado no gráfico 1 [1], faz
aumentar o interesse das corporações pelas potencialidades proporcionadas por esse meio de
comunicação. Contudo, ao utilizarem tecnologias web, as instituições acabam deparando-se com novas
questões relacionadas ao desempenho de seus sistemas. Senão pelo fato de uma degradação no tempo
de resposta poder gerar prejuízos em decorrência da diminuição do número de negócios e potencial
1
perda de clientes para empresas com plataformas mais velozes, pela simples possibilidade de eventos
dessa natureza poderem ser associados à imagem da instituição.
GRÁFICO 1 - Estações ligadas à Internet
Além disso, essa tecnologia tem sido utilizada também na implementação de soluções internas.
Nesses casos, a portabilidade dos sistemas, que passam a necessitar apenas de um navegador
(browser) instalado nas estações clientes, torna-se um dos principais atrativos para a adoção desse tipo
de solução. Dessa forma, qualquer tipo de instabilidade, passa também a comprometer a própria
produtividade interna da instituição.
Por isso, muitos são os esforços direcionados para a otimização de desempenho em sistemas web.
Em um desses, representado pela elaboração de um trabalho de mestrado ainda em desenvolvimento,
ficou evidente a necessidade de se conhecer alguns detalhes comportamentais específicos do ambiente a
ser trabalhado. Sem esse conhecimento, qualquer proposta poderia enveredar por soluções complexas,
caras e, em certos casos, com resultados abaixo das expectativas. Surgiu daí um problema: como
evidenciar, de maneira precisa e eficiente, as características comportamentais relativas aos indicadores
de desempenho e à carga de trabalho de ambientes computacionais complexos e voláteis, como os
disponibilizados através da Internet (Web), no intuito de otimizar o seu desempenho?
Nesse sentido, o presente artigo busca apresentar um estudo de caso real em que, através da
utilização de técnicas de monitoramento, buscou-se acompanhar a evolução de indicadores de
desempenho e caracterizar a carga de trabalho dos sistemas web de uma instituição de ensino. Os
resultados obtidos, ao exporem a demanda computacional requerida, trouxeram uma série de benefícios
diretos, como a possibilidade de atuação sobre parâmetros arquiteturais a fim de adequar o sistema para
o atendimento a eventos futuros, uma vez que disponibilizaram dados históricos de grande relevância.
Além disso, ao associar-se esse conhecimento ao constante acompanhamento de indicadores de
desempenho, alguns outros resultados preliminares relacionados à otimização de desempenho também
foram alcançados.
Para tanto, a seção 2 busca elucidar alguns aspectos fundamentais de sistemas computacionais web.
A seção 3 aborda os conceitos envolvidos com medição de desempenho descrevendo rapidamente
benchmarks, monitoramento e carga de trabalho. Na seção 4, apresenta-se uma proposta de solução
para o problema descrito e são discutidos os trabalhos correlatos. Já na seção 5, é apresentado o
ambiente real do estudo de caso. Os resultados obtidos são apresentados na seção 6 que é seguida das
conclusões, trabalhos futuros, agradecimentos e referências bibliográficas.
2
2. Sistemas Computacionais Web
Atualmente, a maioria dos sistemas web trabalha com geração dinâmica de páginas. Um sistema que
funcione dessa forma é composto por vários componentes: navegador (browser), servidor web, servidor
de banco de dados (SGBD), servidor de imagens, servidor de cache e elementos ativos de rede
(switches, hubs, cabeamento). Todos eles podendo, de alguma maneira, influenciar no desempenho geral
do sistema.
Esse tipo de implementação mostra-se, atualmente, bastante adequada para Intranets e para o
comércio eletrônico da Internet, onde a natureza da informação muda constantemente e a necessita de
atualizações imediatas e automáticas, normalmente executada por acesso a grandes bancos de dados, é
cada vez maior. Por outro lado, tais páginas exercem grande influência (possíveis degradações) no
desempenho do servidor web [2] de acordo com a quantidade de dados recuperados do SGBD para sua
geração.
É importante também entender que, solicitar uma página pode gerar uma ou mais requisições http,
dependendo do número de documentos envolvidos. Além do corpo html, normalmente existem vários
botões, gráficos, imagens, ícones e, cada um desses componentes, gera uma requisição que pode ser
registrada no arquivo de log de acessos do servidor web. Nesse registro, encontra-se um código de
resposta que indica se a solicitação foi bem sucedida ou não. As bem sucedidas são chamadas de hit.
Segundo Killelea [3], um site com baixo volume de acessos gera entre mil e dez mil hits por dia,
enquanto que um site médio atinge de dez mil a um milhão de hits por dia. Um site com mais de um
milhão de hits ao dia é considerado um site com alto volume de acesso.
3. Medição
Medição é uma técnica de avaliação de desempenho que utiliza normalmente ferramentas como
benchmarks e monitoramento.
3.1. Benchmarks
Benckmarcks são programas ou parte de programas comerciais ou científicos que tentam representar
uma carga de trabalho real que será submetida ao sistema a ser avaliado. No entanto, o termo é, por
vezes, utilizado como sinônimo de carga de trabalho.
Existem órgãos especializados no estudo e desenvolvimento desse tipo de aplicação, tais como: TPC
(Transaction Processing Concil) [4], que se especializou em benchmarks para sistemas baseados em
transações;
e
SPEC
(Systems
Performance
Evaluation
Cooperative)
[5],
desenvolvimento de diversos benchmarks para aplicações científicas e comerciais.
3
responsável
pelo
3.2. Monitoramento
O monitoramento é uma forma de medição que consiste em observar o desempenho de um sistema
através da utilização de diferentes instrumentos os quais observam o comportamento do sistema, coletam
estatísticas, analisam os dados, e mostram resultados. Alguns chegam até a identificar áreas de
problemas e a sugerir soluções.
Pode-se utilizar um monitor para medir a utilização de recursos. Com isso, torna-se possível encontrar
pontos críticos de degradação de desempenho (gargalos) e, a partir daí, ajustar os parâmetros do
sistema. O monitoramento serve também para caracterizar a carga de trabalho, sendo os resultados úteis
no planejamento de capacidade.
Dois dos principais instrumentos de monitoramento são os arquivos de registro de utilização (logs) e
ferramentas de monitoramento de desempenho embutidas nos sistemas operacionais.
3.3. Carga de Trabalho
A caracterização da carga de trabalho de servidores web permite um melhor entendimento dos
padrões de utilização de um sistema. Essa carga de trabalho é determinada tanto pelo fluxo de
requisições enviadas pelos clientes quanto pelas respostas do(s) servidor(es) para estas requisições.
Tal caracterização envolve a determinação e descrição das características fundamentais da demanda.
Para isso, é necessária a coleta de dados relevantes durante um período de tempo significativo, sendo os
mesmos armazenados para posterior análise. Dentre outras informações, devem estar presentes: horário
de chegada da requisição, rede de origem, tipo de requisição, demanda de recursos e tamanho da
resposta.
Com estes dados relativos a um período de tempo representativo do funcionamento do sistema,
através de técnicas estatísticas, são obtidas informações importantes sobre a carga de trabalho do
servidor web possibilitando caracterizações tais como taxa de requisições, distribuição dos tamanhos dos
objetos do servidor, tamanho médio dos documentos requisitados, concentração das referências, tipos de
objetos (HTML, imagem, etc), taxa de requisições bem sucedidas dentre outras.
4. Proposta e Trabalhos Correlatos
Visando a otimização do desempenho em sistemas web, propõe-se um esquema de constante
monitoramento dos servidores envolvidos no processamento de requisições. Acredita-se que, com esse
tipo de abordagem, alguns benefícios diretos podem ser obtidos tornando mais eficiente a administração
do ambiente.
4
Para tanto, não basta monitorar o desempenho computacional. Dados sobre a utilização dos sistemas,
tais como erros ocorridos, origem das requisições e tráfego gerado devem também ser observados. Temse, dessa forma, dois conjuntos de métricas: um referente ao desempenho e outro à carga de trabalho.
Como já mencionado, o primeiro pode ser obtido diretamente de ferramentas de monitoramento
embutidas no sistema operacional. Já o segundo é fornecido pelos servidores através dos registros de
utilização (logs).
Ao coletar e armazenar esse tipo de informação, algumas possibilidades passam a existir. Em primeiro
lugar, torna-se viável o acompanhamento dos indicadores de desempenho, sejam eles imediatos ou
históricos. Além disso, passa a ser possível caracterizar, de maneira bastante segura, a carga de trabalho
suportada.
Informações provenientes da análise dos indicadores de desempenho podem, por si só, trazer uma
série de benefícios ao administrador do sistema. Torna-se possível, por exemplo, a identificação de
pontos críticos de degradação de desempenho (gargalos) permitindo a rápida e correta atuação sobre o
problema. Além disso, ao disponibilizar-se uma linha histórica das métricas envolvidas, acaba gerando-se
um conhecimento sobre o comportamento normal do sistema. Assim, ainda que não haja um gargalo,
pode-se atuar sobre variações incomuns observadas de modo a antecipar um possível problema futuro.
Por outro lado, a caracterização da carga de trabalho, ao evidenciar o comportamento temporal do
ambiente, permite a atuação sobre parâmetros arquiteturais no intuito de melhor adequá-los à uma
demanda específica. Máquinas podem, por exemplo, ser adicionadas ao ambiente ou mesmo
remanejadas para o atendimento de um sistema específico. Pode-se ainda, com base nesse
conhecimento, projetar-se um ambiente computacional mais adequado, já que a escolha da arquitetura
passa a ser embasada em dados concretos de utilização. A decisão de utilizar-se um aglomerado
(cluster) ou um servidor multi-processado de grande porte passa a ser embasada em dados concretos.
Por fim, a caracterização passa a permitir um melhor planejamento de manutenções programadas.
Além de tudo isso, esse tipo de abordagem pode ser financeiramente muito atrativa, já que minimiza a
possibilidade de investimentos inadequados em equipamentos ao mesmo tempo em que diminui o
esforço necessário para a detecção de problemas.
Propostas de monitoramento para a coleta de indicadores de desempenho são encontradas no meio
científico com uma certa facilidade. Anderson [6] apresenta uma solução bastante interessante
denominada Digital Continuous Profiling Infrastructure que possibilita a coleta de dados em ambientes já
em produção. Proposta similar foi apresentada por Zhang [7].
Trabalhos enfocando a caracterização de carga de trabalho também aparecem já há algum tempo.
Jain [8], por exemplo, apresenta a teoria relacionada a esse tipo de tratamento. Além dele, apesar de
enfocar outros objetivos, Almeida [9] também discuti as características envolvidas com esse processo.
Apesar disso, não foram encontrados trabalhos que utilizassem os benefícios trazidos por essas duas
abordagens no intuito de possibilitar o ajuste de parâmetros arquiteturais e conseqüentemente otimizar o
desempenho de sistemas web.
5
Dessa forma, o presente trabalho busca apresentar e analisar os benefícios alcançados por esse tipo
de abordagem quando se faz necessária a otimização de desempenho em sistemas computacionais
disponibilizados através da web. Acredita-se, contudo, que implementações similares podem ser
expandidas e utilizadas em outros ambientes. O que deve ser abordado em trabalhos futuros.
5. Ambiente Real do Estudo de Caso
O estudo de caso a ser apresentado refere-se ao ambiente web de uma grande instituição de ensino
com cerca de 50 mil usuários diretos (alunos, professores e funcionários) e que presta diversos serviços
via internet tais como: inscrição e divulgação de resultados de concursos e vestibulares, acesso às
informações acadêmicas, prestação de serviços e informações financeiras, divulgação de estágios e
oportunidades de trabalhos, informações sobre seus cursos e respectivos currículos, apropriação de
horas de seus funcionários e etc.
Vale dizer que o número de usuários do sistema pode ser muito maior que o de usuários diretos de
acordo com os serviços disponibilizados à comunidade. Por exemplo, durante inscrição e divulgação de
resultados de concursos ou vestibulares.
5.1. Infra-estrutura
Dados os objetivos específicos desse trabalho, tornou-se
possível focar a interação entre os
servidores que compõem o sistema sem considerar a influência dos componentes do lado cliente.
Portanto, trabalhou-se com um sistema web simplificado similar ao esquema mostrado na figura 1.
FIGURA 1 – Servidores de Aplicações Web e SGBD
A infra-estrutura final utilizada no estudo foi composta de: dois servidores IBM Netfinity 5100 com dois
processadores Pentium III de 650 MHz e 2 GB de memória RAM para servidores de aplicações web; um
IBM Netfinity 8500R com oito processadores Pentium III de 550 Mhz com 4 GB de memória RAM para
servidor de banco de dados.
Todos com sistema operacional Windows 2000 Server, sendo o sistema gerenciador de banco de
dados utilizado o Microsoft SQL Server 2000. Já o software servidor de aplicações utilizado foi o
Silverstream Application Server da própria Silverstream Inc® que foi adquirida em 2003 e atualmente
pertence a Novell®. Esse software é um servidor web com APIs para geração de páginas dinâmicas
através de JSPs, servlets e HTML. Uma característica importante do software é que ele não armazena
6
páginas como arquivos em disco. Todo documento disponibilizado é gerado dinamicamente a partir de
requisições SQL enviadas a um banco de dados relacional. Portanto, para que o sistema funcione, é
necessário que se tenha um SGBD para armazenar os documentos que serão disponibilizados para web.
Os dois servidores de aplicações e o SGBD foram interligados por uma rede 100Mbps sendo os dois
primeiros completamente dedicados aos sistemas web e o
de banco de dados compartilhado por
aplicações executando outros tipos de sistemas.
O cenário foi monitorado de novembro de 2001 a novembro de 2003, realizando-se uma coleta
continua de dados de acesso e de contadores de desempenho. Estes, atualmente, compõem uma base
com mais de cem milhões de registros.
6. Resultados
A abordagem utilizada possibilitou uma precisa caracterização da carga de trabalho do ambiente web.
Assim, inúmeras informações relevantes puderam ser obtidas tornando a administração do sistema muito
mais eficiente, já que as ações corretivas e preventivas, a partir daí, passaram a ser tomadas com um
embasamento histórico bastante efetivo.
Para isso, conforme dito anteriormente, a coleta de informações de log e contadores de desempenho
foi imprescindível. Essa coleta seguiu a abordagem descrita a seguir.
6.1. Arquivo de Log de Acesso
Foram examinadas as requisições dos clientes, concluídas, registradas no arquivo de log dos
servidores de aplicações. Cada requisição http gerava uma linha no log contendo as seguintes
informações:
-
LIPAddress: O endereço IP do sistema que realizou a requisição (cliente, firewall intermediário ou
servidor proxy);
-
Lhost: O servidor do aglomerado que recebeu a requisição;
-
Luser: Usuário que requisitou a página (na maioria das vezes: anônimo);
-
Ldate: Data e hora da chegada da requisição;
-
Lrequest: O tipo de requisição;
-
LURL: A URL alvo da requisição;
-
LreplyStatus: O status HTTP após o processamento da requisição;
-
Lbytes: O número de bytes retornados.
Como exemplo de linhas inseridas nesse arquivo de log, tem-se:
198.81.8.2 - SYS\\Anonymous [02/Nov/2003:12:10:32 +3]
"GET http://www1/index.html HTTP/1.0" 200 12630
200.11.1.7 - SYS\\Anonymous [02/Nov/2003:12:10:35 +3]
7
"GET http://www2/index.html HTTP/1.0" 200 12630
TABELA 1 - Linhas inseridas no log.
6.2. Contadores de Desempenho
Foram selecionados os contadores mais significativos para cada objeto (disco, memória, processador,
processo e sistema operacional). A escolha dos contadores foi modificada ao longo do processo de
monitoramento de acordo com as necessidades identificadas. Já a faixa de valores aceitáveis para cada
um desses contadores baseou-se nas especificações do fabricante do Sistema Operacional e do SGBD
que, no caso, foi a Microsoft [10]. A linha de base identificada nesse estudo de caso resultou de uma
análise contínua dos dados coletados, avaliações empíricas do desempenho e depoimentos dos usuários
do sistema. Essa linha de base difere para cada sistema, pois depende do hardware, software e
configurações que podem ser muito diferentes.
Os contadores com suas faixas de valores aceitáveis estão descritos a seguir:
Objet
Contador
Observação
o
MBytes
Valores abaixo de 5 MB
disponíveis
indicam falta de memória
Memória
física
para
executar
os
processos.
Páginas
Se estiver constantemente
por segundo maior que zero o SO estará
utilizando
arquivo
de
paginação.
% tempo
Deve sempre estar acima de
ocioso
10%.
Disco
Compriment Deve ser sempre menor que
o médio da
o dobro da quantidade de
fila de disco
acessos
possíveis
simultâneos
(dado
pela
configuração de discos -
Processo
RAID).
Falhas de
Números altos para este
Página por
contador
segundo
paginação excessiva.
indicam
uma
8
Área de
Valores abaixo de 5 MB
Trabalho
indicam falta de memória
sador
Proces-
para o processo.
% tempo
Deve estar sempre abaixo
de
de 90%.
processador
Alternâncias Não deve alcançar 8000,
de contexto
sobretudo
quando
o
por segundo percentual de utilização de
processador
ficar
Sistema
constantemente acima de
90%.
Compriment Se estiver constantemente
o
acima de 2, deve-se diminuir
da fila
a
do
eficiência de processamento
carga,
aumentar
a
processador ou adicionar mais poder de
Compriment Se superior a 2, indica que
rede
Interface de
processamento ao servidor.
o
se
está
da fila
atraso.
produzindo
um
de saída
TABELA 2 - Contadores de desempenho
6.3. Otimizações Realizadas
O primeiro benefício concreto alcançado foi o conhecimento temporal do acesso ao sistema. Os
gráficos 2, 3 e 4 exemplificam o conhecimento gerado por esse tipo de informação.
9
22:00
20:00
18:00
16:00
14:00
12:00
10:00
08:00
06:00
04:00
02:00
700000
600000
500000
400000
300000
200000
100000
0
00:00
Requisições
Requisições de Páginas por Horário
Horário
GRÁFICO 2 - Requisição de páginas por horário
Acessos por Dia da Semana
2500000
Acessos
2000000
SEG
TER
QUA
QUI
SEX
1500000
1000000
DOM
SAB
500000
0
Dia
Dia da Semana
GRÁFICO 3 - Requisição de páginas por dia da semana
Acessos por Mês
Acessos
8000000
6000000
4000000
2000000
0
01
2002
02
03
04
05
06
07
Mês
GRÁFICO 4 - Requisição de páginas por meses do ano
Com isso, decisões relativas a manutenções passaram a ser tomadas levando-se em consideração
tais informações. Isso aumentou significativamente a disponibilidade do sistema em horários críticos de
10
utilização. O que, conseqüentemente, elevou a satisfação dos usuários diminuindo o número de
reclamações causadas por manutenções programadas.
Além disso, ao conhecer a elevação de demanda ocorrida em determinados períodos do ano, passouse a realizar o aluguel de máquinas que, acrescentadas ao aglomerado (cluster), aumentavam o poder de
respostas dos sistemas envolvidos. Ao adotar-se essa solução, foi possível manter inalterado o
desempenho do sistema mesmo diante de um enorme aumento na demanda computacional. Essa
solução mostrou-se bastante adequada, já que dispensou a compra de servidores de maior capacidade
que, por certo, ficariam ociosos na maior parte do ano.
Outro importante conhecimento gerado foi a distribuição de acesso por sistema, demonstrado no
gráfico 5.
400000
300000
200000
100000
21:00
18:00
15:00
12:00
09:00
06:00
03:00
0
00:00
Requisições
Requisições de Páginas por Sistema Horário
Horário
Sistema1
Sistema2
Outros
Sistema4
GRÁFICO 5 - Requisição de páginas por sistema
O maior benefício trazido por essa informação foi a possibilidade de distribuição dos sistemas por
máquinas específicas. Com isso, foi possível minimizar a influência provocada por um sistema que
estivesse em período de alta utilização sobre aqueles que mantinham um comportamento inalterado
nesse mesmo intervalo de tempo. Ou seja, a divulgação do resultado de um vestibular passou a não mais
ter qualquer influência sobre o lançamento de horas dos funcionários da instituição de ensino. Isso foi
conseguido após o desenvolvimento de uma solução interna de balanceamento de carga baseada no
sistema a ser acessado.
Seguindo com os resultados alcançados, pode-se citar a mudança de infra-estrutura de rede
provocada pela descoberta de que quase 50% das requisições, no período de divulgação de notas, partia
da rede de um dos campi da instituição. Com essa informação, foi possível aumentar o link de
comunicação com o Centro de Processamento de Dados provocando um alívio do tráfego e conseqüente
melhoria no acesso ao sistema acadêmico.
Também através da caracterização obtida, foi possível direcionar esforços da equipe de
desenvolvimento no sentido de melhorar o desempenho geral do sistema. Observando-se a tabela 3,
pode-se verificar a relação do tamanho médio dos documentos mais acessados.
11
Tamanho
Documento
Médio
(Bytes)
Nº de
Acessos
PgAln_OfertaEstagios.html
6525
1416366
PgAlOfertaEstagios.html
4498
934496
PgAlLogin.html
3079
469593
PgAln_Apresentacao.html
2414
389658
Login.html
737
275046
ml
7601
252638
PgInicialCanal2.html
20030
235926
PgLimpaRefresh.html
390
212915
DetalhesSGA.css
125
209541
Mng_DefCurricular01.gif
636
206119
Mng_NotasFreq01.gif
608
199857
12360
192900
Mng_SolicServ01.gif
715
192810
PgInsObjeto.html
4650
192530
PgAln_OfertaEstDetalhe.ht
PgAln_NotaFrequencia.html
TABELA 3 - Tamanho médio dos documentos mais acessados
De posse dessa informação, equipes foram constantemente formadas no intuito de otimizarem as
páginas que apresentavam maior volume de acesso ou maior tamanho médio. Não foram poucos os
casos em que tais equipes diagnosticaram falhas de programação e mesmo falhas (bugs) do servidor de
aplicação onde, em certos casos, consultas gigantescas eram desnecessariamente submetidas ao
servidor de Banco de Dados.
Além dessas ações tomadas com base na caracterização da carga de trabalho, alguns outros
resultados preliminares relativos à otimização de desempenho puderam ser alcançados. Um dos mais
importantes foi a descoberta e ajuste em uma falha de configuração de memória do servidor de banco de
dados.
Apesar desse servidor possuir 4,0GB de memória física, observou-se que apenas 1,2 GB era, em
média, utilizado. Ainda assim, com memória física disponível, o sistema apresentava paginação
excessiva. Com base nessa observação e em estudos realizados após esse levantamento, descobriu-se
a necessidade de ajustar um parâmetro do sistema operacional para que o mesmo permitisse uma maior
utilização de memória por parte do SGBD. Incluiu-se então o parâmetro /3gb ao arquivo de configuração
do Windows 2000 (boot.ini).
Após a configuração, o sistema operacional liberou três gigabytes de memória RAM para o banco que
passou a utilizá-los diminuindo sensivelmente a paginação e falhas de página. Um acompanhamento
12
semanal do monitoramento realizado antes e depois dessa alteração pode ser observado nos gráficos a
seguir:
MB Disponíveis
2000
Valor
1500
1000
500
0
SEG
TER
QUA
QUI
SEX
Dia da Semana
Antes
Depois
GRÁFICO 6 – MB Disponíveis antes e depois das
alterações no boot.ini
Pode-se observar que a quantidade de memória livre, que era em média 1774 MB, passou para 893
MB. Isso indica que o servidor trabalhava, antes da alteração, com uma demanda reprimida de memória o
que, por certo, degradava o tempo de resposta dos sistemas atendidos.
Páginas por Segundo
100
Valor
80
60
40
20
0
SEG
TER
QUA
QUI
SEX
Dia da Semana
Antes
Depois
GRÁFICO 7 – Páginas por Segundo antes e depois
das alterações no boot.ini
Já o contador páginas/seg, o qual não se enquadrava nas recomendações destacadas na tabela 2,
teve sua média diminuída de 50,10 para 0,45. Sabendo-se que o acesso a disco eleva muito o tempo de
processamento de uma aplicação, pode-se perceber que valores médios, em certos momentos, próximos
a 80, ocasionavam sérios problemas de desempenho.
13
Falhas de Páginas / Segundo
200
Valor
150
100
50
0
SEG
TER
QUA
QUI
SEX
Dia da Semana
Antes
Depois
GRÁFICO 8 – Falhas de Páginas por Segundo
antes e depois das alterações no boot.ini
Outro indicativo de excesso de paginação era indicado pelo contador de falhas de páginas por
segundo. Também nesse caso, a melhora foi muito grande, saindo-se de uma média de 117,07 e
chegando em 7,64.
Sabendo-se que as semanas de monitoramento não apresentaram qualquer modificação no nível de
acesso que pudesse explicar a alta variação nos níveis dos contadores destacados, concluiu-se que a
variação observada foi quase que exclusivamente provocada pela alteração (ajuste) de configuração
descrita.
Assim, com uma simples alteração de configuração, foi possível provocar uma significativa melhora
geral no desempenho do servidor, o que pôde ser confirmado pelo retorno dado pelos usuários e
observação direta do comportamento dos sistemas. Contudo, esse resultado seria muito difícil de ser
alcançado se não houvesse um ambiente de monitoramento como o descrito. Nesse caso, muitas ações
ineficazes poderiam ser tomadas antes de se descobrir o verdadeiro motivo ou causa do problema. Ações
tão desastrosas e onerosas quanto a compra de novos equipamentos ou mesmo a substituição de
sistemas.
7. Conclusões e Trabalhos Futuros
Com base no estudo de caso apresentado, é possível perceber que muitos foram os benefícios
trazidos pela implementação de um esquema de monitoramento focado em indicadores de desempenho e
caracterização da carga de trabalho. Com essa abordagem, consegui-se aumentar a disponibilidade
geral dos sistemas, implementar uma arquitetura adequada para o atendimento sazonalmente variável da
demanda, desenvolver mecanismos de distribuição de carga, propor e executar modificações estruturais
adequadas, descobrir problemas relacionados a bugs apresentados pelos aplicativos utilizados, além de
permitir-se ações diretas de otimização como a descrita na alteração do arquivo de configuração do
Sistema Operacional.
14
Contudo, se muitos foram os benefícios, deve-se destacar todo o tempo e esforço gastos na
elaboração e implementação de um esquema como esse. Muitas foram as dificuldades encontradas na
operacionalização da coleta de indicadores e mesmo na estrutura de armazenamento dessas
informações. Por isso, trabalhos futuros serão elaborados no sentido de propor um mecanismo de coleta,
armazenamento e tratamento ainda mais adequado. Uma estrutura de banco de dados de processamento
analítico on-line (OLAP) pode ser proposta facilitando a consulta aos dados históricos e possibilitando até
a utilização de mecanismos de Data Mining para a descoberta de padrões e tendências dentro dos dados
armazenados. Além disso, a abordagem pode ser expandida para o tratamento de outras plataformas que
não apenas a web, aumentando as possibilidades relacionadas e esse tipo de solução.
Tendo-se em vista tudo isso, pode-se dizer que a proposta apresentada foi capaz de evidenciar com
exatidão e de maneira eficiente as características comportamentais relativas aos indicadores de
desempenho e à carga de trabalho do ambiente web em questão. Principalmente se for levado em
consideração que muitos outros resultados ainda poderão ser obtidos com base em análise que estão
ainda em andamento. Conclui-se então que a otimização de desempenho de sistemas web pode ser
alcançada pela implementação desse tipo de solução.
8. Agradecimentos
Agradecimentos ao DataPuc Processamento de Dados, por disponibilizar a infra-estrutura necessária à
realização do estudo de caso e aos colegas dessa instituição e do Programa de Pós-Graduação em
Engenharia Elétrica pela colaboração e incentivo demonstrados. Agradecimentos também aos familiares
pelo apoio sempre irrestrito.
9. Referências
[1] Internet Systems Consortium. Disponível em <http://www.isc.org/> Acesso em 12 de jun. 2004.
[2] M.A. Mendes, V.A.F. ALMEIDA, ”Comparação e Análise de Requisições Dinâmicas em Servidores WWW”, XXV
Seminário Integrado de Software e Hardware, 1998, Belo Horizonte.
[3] P. Killelea, Web Performance Tuning, 2nd Edition, O´Reilly & Associates, USA, 2002.
[4] Transaction Processing Concil. Disponível em <www.tpc.org> Acesso em 12 de jun. 2004.
[5] Systems Performance Evaluation Cooperative. Disponível em <www.spec.org> Acesso em 12 de jun. de 2004.
[6] J.M. Anderson, L.M. Berc, J. Dean, S. Ghemawat, M.R. Henzinger, S.A. Leung, R.L. Sites, M.T. Vandervoorde,
C.A. Waldspurger, W.E. Weihl, “Continuous Profiling: Where Have All the Cycles Gone?”, ACM Transactions on
Computer Systems, Vol 15, No. 4, Novembro 1997.
[7] X. Zhang, Z. Wang, N. Gloy, J.B. Chen, M.D. Smith, “Operating System Support for Automated Proffiling and
th
Optimization”, 16 ACM Symposium on Operating Systems Principles, New York, 1997.
[8] R. Jain, The Art of Computer Systems Performance Analysis, Wiley, New York, 1991.
[9] V.A.F. Almeida, D.A. Menascé, Capacity Planning for Web Performance, New Jersey, Prentice Hall Inc., 1998.
[10] Aministering a Microsoft SQL Server 2000 Database, Microsoft Training and Certification, 2000.
15
16
Download

ARTIGO 3 CARLOS