Dentro de qualquer operação de TI é possível encontrar equipamentos e soluções com configurações incorretas, códigos confusos ou estratégias obscuras. Veja 15 dicas sobre como resolver esses gargalos.
Gargalo é um termo difícil de descrever. Ele significa restrições em determinadas formas de comunicação, interação ou transferência de informações. Por outro lado, o termo também leva as pessoas a acreditar que algumas combinações mágicas de sorte, dinheiro e ingenuidade podem ser capazes de resolver o entrave propriamente dito e deixar todas as coisas fluírem bem.
O problema dos gargalos de desempenho nas empresas – e nas áreas de TI em particular – é que eles podem ser difíceis de identificar. O problema está na CPU? Na rede? Em alguma parte confusa de um determinado código? Geralmente, o réu mais óbvio é o desajuste de alguma coisa mais ampla e mais misteriosa. E, quando o gargalo de desempenho insiste em permanecer não resolvido, a gerência de TI pode deparar com uma dura escolha entre admitir a ignorância e preparar desculpas. Felizmente, assim como em diagnósticos médicos ou em trabalhos de detetives, a experiência ajuda. Com base em alguns anos de investigações e experiências, nós coletamos 15 dos problemas mais prováveis – e sugerimos soluções – para ajudar sua operação de TI no processo de rastreamento e correção de problemas de performance.
Alguns desses gargalos são mais óbvios do que os outros. Muito provavelmente você próprio tenha alguma coisa a dizer sobre alguns destruidores sorrateiros de desempenho. No entanto, esperamos que identificar os entraves mais comuns que desaceleram o bom andamento das disciplinas de TI possa ajudá-los no primeiro passo para a criação de uma infra-estrutura de alto desempenho, conforme seus recursos permitirem.
1-) Provavelmente o problema não está nos servidores.
As atualizações de servidores costumavam fazer toda a diferença no passado, o que dá sentido ainda hoje ao antigo pensamento “quando tudo falhar, dê mais hardware à estrutura”. Isso ainda é verdade em alguns casos. Mas quanto da TI ainda é realmente baseado na intensidade da computação? Geralmente, você pode economizar muito tempo e dinheiro desviando suas atenções do servidor. Por mais simples que seja um equipamento, possivelmente ele ainda tem muita potência para gerenciar as tarefas diárias.
Aqui vai um exemplo concreto. Em uma rede de mais de 125 usuários, um controlador mais antigo de domínios Windows deu sinais de estar precisando de substituição. Este servidor originalmente executava Windows 2000 Server e foi atualizado para Windows Server 2003 algum tempo atrás, mas o hardware permaneceu inalterado. Este HP ML330 com CPU de 1 GHz e 128 MB de memória RAM estava funcionando como um controlador de domínios do diretório ativo, desempenhando todos os papéis de um AD FSMO que executa DHCP e serviços DNS, tão bem quanto um IAS (Internet Authentication Services).
A alternativa estava certa? Na verdade, ele realmente desempenhou a tarefa de maneira satisfatória. Ele foi substituído por um HP DL360 G4 com CPU de 3 GHz, 1 GB de RAM e drives espelhados de 72 GB SCSI. Executando todos os serviços, opera continuamente e completamente carregado – e a diferença nem pode ser percebida. É fácil de identificar aplicações que vão engolir todo o desempenho de sua CPU e sua memória, mas elas tendem a ser muito específicas. Para quase todo o resto, sua humilde caixa comoditizada será suficiente para suportar.
2-) Acelerando as buscas
Você pode criar a aplicação mais atraente do mundo, mas, se o acesso aos servidores de banco de dados back-end cria gargalos, seus usuários finais ou consumidores não ficarão satisfeitos. Então, ajuste bem as solicitações ao banco de dados e maximize o desempenho. Três medidas básicas podem ajudar você a melhorar o desempenho dessas buscas. Primeiro, a maioria dos produtos de banco de dados inclui ferramentas (como DB2 UDB para Visual Explain iSeries) que podem dissecar suas buscas durante o desenvolvimento, fornecendo retorno sobre sintaxe e o tempo aproximado de várias seções dos comunicados SQL. Utilizando essa informação, localize as partes mais longas da busca e tente fragmentá-las em partes menores para analisar se é possível encurtar o tempo do processo. Alguns produtos de banco de dados também incluem ferramentas de alerta de performance, como o Automatic Database Diagnostic Monitor, da Oracle, que fornece recomendações – como criação de um novo índice – para acelerar as buscas.
Posteriormente, ative as ferramentas de monitoramento do banco de dados em um servidor de plataforma. Você pode usar um produto avulso, como o Netvigil, da Fidelia, se seu banco de dados não apresentar suportes para monitoramento. Com os monitores habilitados, gere tráfego contra o servidor de banco de dados utilizando scripts de teste de carga. Examine os dados condensados para ver como suas buscas se comportaram sob carga; essa informação pode levar você a detectar alguma outra busca morosa.
Se você tiver recursos suficientes de servidor para reproduzir bem seu ambiente de produção com fluxo de trabalho misto, você pode executar uma terceira rodada de solicitações utilizando a ferramenta de teste de carga, como a OpenSTA, juntamente com um sistema de monitoramento de banco de dados para ver como suas buscas se comportam ao lado de outras aplicações que atingem o banco de dados. À medida que as condições dos bancos de dados mudam – com aumento de volume, remoção de registros e outras situações – continue testando e ajustando. Geralmente o esforço é bastante válido.
3-) Proteção contra vírus: qual o custo?
A proteção contra vírus em servidores críticos é um requisito básico de infra-estrutura, especialmente para servidores Windows. No entanto, o impacto pode ser muitas vezes doloroso. Alguns scanners para vírus são mais complexos do que outros e podem reduzir significativamente o desempenho de toda a estrutura. Tente executar testes de performance com e sem os mecanismos de scanner para vírus, a fim de determinar seu impacto. Se você perceber uma melhora marcante sem a solução, é hora de procurar por outro fornecedor. Também cheque funcionalidades específicas. Desabilite as funções de mapeamento de vírus em tempo real e frequentemente você conseguirá melhorar a performance de seu sistema.
4-) Maximizando a camada intermediária
Não importa quão bem tenha sido escrita a lógica de seus negócios. Quando ela é instalada na camada intermediária, você precisará ajustar o ambiente de execução do servidor de aplicações para maximizar a performance. Da mesma maneira como em um aparelho de som antigo, com vários botões de ajuste da qualidade de som, servidores de aplicações de fornecedores como IBM, BEA e Oracle, trazem um vasto grupo de controles. A dica é girar os botões na direção correta, dependendo dos atributos de sua aplicação.
Por exemplo, se suas aplicações servlet são pesadas você vai querer habilitar o cache de servlet. Da mesma maneira, se suas aplicações utilizam muitos comandos SQL para suportar uma ampla base de usuários, você vai querer habilitar um cache para comandos e deixar disponível a capacidade máxima de cache de maneira que seja amplo o suficiente para suportar o fluxo de trabalho.
Uma das maiores áreas em que o ajuste de performance realmente ajuda é com o grupo de conexão de base de dados. Coloque as conexões máximas ou mínimas em níveis bem baixos e você com certeza vai criar um gargalo. Ajuste-as de maneira muito alta e você também notará uma desaceleração nos resultados, criada pela sobrecarga exigida para manter o amplo grupo de conexões.
Se você souber o volume de carga pretendido, ajuste o tempo de execução do servidor por meio do acionamento de ferramentas de monitoramento de performance, como o Tivoli Performance Viewer para WebSphere, da IBM. Gere a quantidade de fluxo que você espera utilizando uma ferramenta de geração de carga e salve os resultados da monitoria, a fim de reproduzi-los novamente para analisar quais os pontos que precisam ser ajustados. Em produção, é uma boa idéia acionar também o monitoramento passivo em carga baixa para manter a padronização durante o tempo de execução. Se seu fluxo de trabalho mudar com o tempo, você vai querer executar uma nova revisão de performance.
5-) Melhore a conectividade da rede
A maioria dos servidores corporativos de nível intermediário atualmente tem placas de interface de redes (NICs) duplas, mas a maioria não utiliza a segunda funcionalidade. Além disso, os preços de switches de gigabit têm caído praticamente ao chão. Com um link de 120 MBps em seu filesaver vários clientes de 100 megabits podem atingir taxas de acesso a arquivos simultaneamente. Mesmo sem os switchers gigabit, a união de duas placas de interface de redes pode ser importante. No mínimo, a união de duas placas traz redundâncias, mas adiciona equilíbrio de transmissão de carga e, dessa forma, você pode efetivamente dobrar a banda externa.
6-) Acelerando webservices
Existe realmente muito a fazer para ajustar um servidor web e maximizar a performance? Na verdade, há sim – principalmente ajustando várias configurações críticas para corresponder o tráfego de produção que você espera. Para servidores web já em produção, comece coletando estatísticas de tempo real (a maior parte dos equipamentos web tem essa funcionalidade embutida). Posteriormente, mude para a plataforma a fim de determinar quais os parâmetros precisam ser ajustados, se necessário.
Ative as ferramentas de monitoramento de performance do servidor web em nível de plataforma. Execute um teste de carga e inspecione os parâmetros relevantes, como tempo de resposta, bytes enviados e recebidos e o número de solicitações e respostas.
Parâmetros-chave deverão ser ajustados dependendo do volume de tráfego, inclusive cache, processamento e configurações de conexão.
Habilite o cache para conteúdo freqüentemente utilizado, alguns servidores web permitirão você armazenar alguns arquivos dinamicamente baseados no uso, enquanto outros exigirão que você especifique o que será armazenado. Certifique-se de que seu tamanho máximo de cache é suficiente para o tráfego que você espera, assim como seu servidor web. E, se o seu servidor web suportar aceleração de cache, habilite esse recurso também.
Para as configurações de processamento e conexão, estabeleça os mínimos e máximos, de acordo com o fluxo esperado. Para as conexões, você também precisará definir o número máximo de solicitações por conexão e as configurações para expiração. Não fixe esses valores em níveis muito altos ou muito baixos, porque desacelerações podem acontecer.
7-) Solucionando a angústia da rede WAN
Você acha que tem de rever a largura de banda de sua rede WAN? Você pode facilmente gastar muito dinheiro em sistemas para modelar o tráfego ou ferramentas de cache na tentativa de controlar a utilização da banda. Mas e se este não for o caso?
Primeiro: antes comprar qualquer coisa, tenha uma idéia sólida de qual tráfego está cruzando a rede WAN. Ferramentas de análise de redes, como a Ethereal, ntop, Observer, da Network Instruments; ou o EtherPeek NX, da WildPacket, podem dar uma boa noção do que realmente está se passando.
Você pode detectar que os tempos de replicação para o diretório ativo estão configurados em níveis muito baixos, e simplesmente ajustar intervalos maiores, o que pode dar um maior fôlego durante seu dia de trabalho. Alguns usuários remotos estão empurrando arquivos muito longos pela rede WAN sem se dar conta? Ainda existem vestígios de alguma rede IPX já desabilitada? Alguns problemas de WAN recaem na configuração inadequada de aplicações, em que o tráfego é direcionado diretamente para a rede, uma vez que deveria ter permanecido nos sistemas locais. Para ganhar em performance, faça relatórios de WAN regularmente, a fim de economizar dinheiro e poupar dores de cabeça.
😎 Jogando limpo
É freqüente entre as companhias que aplicações, webservices e websites de vários departamentos disputem recursos dos servidores. Embora cada um desses componentes possa estar bem ajustado, uma aplicação de outro departamento que também está utilizando os mesmos clusters de produção pode apresentar configuração deficiente para buscas ou outra tarefa, afetando os usuários ou clientes.
Em curto prazo, o que pode ser feito é trabalhar com os administradores do sistema e com o departamento que está tendo problemas de performance para obter resoluções para seus usuários ou consumidores. Em longo prazo, criar uma comunidade que cruze todos os departamentos usuários dos clusters de produção em que os objetos estão instalados, pode ser útil. Trabalhe junto com as equipes para garantir que existe um fundo adequado para o ambiente de plataformas realmente representativo para o ambiente misto de fluxo de trabalho. Por último, você vai querer desenvolver vários marcadores que podem ser utilizados para validar a performance de carga de trabalho mista.
9-) Modelando o tráfego
Se sua rede WAN está realmente limitada em tamanho – e você não consegue bancar uma rede longa de frame-relay – adotar estratégias de modelagem de tráfego e caching podem ajudar. As configurações de modelagem de tráfego são mais do que arte ou ciência. Priorizar aplicações é geralmente uma medida mais política do que técnica, mas tem efeitos notáveis no desempenho de uma rede.
Caching é outro ponto a ser feito de maneira combinada. Isso exige menos trabalho do que a modelagem de tráfego, mas o impacto também deve ser menor. Ferramentas de cache armazenam e disponibilizam cópias de dados comumente acessados para reduzir o tráfego WAN. O lado negativo é que o conteúdo dinâmico não pode ser armazenado e, com isso, o e-mail não terá a melhoria de performance.
10-) Correções preventivas
Você chega ao trabalho em uma segunda-feira e logo descobre que vários desktops estão travados ou que o desempenho de uma aplicação crítica caiu até ir ao colapso. Depois de investigar, você percebe que uma correção de segurança aplicada durante o final de semana foi a causa do transtorno.
É por isso que você precisa de ferramentas que suportem a aplicação das correções. Uma alternativa ainda melhor é incluir testes em sua estratégia de aplicação de correções. Primeiramente, é necessário que você obtenha um inventário regular das aplicações e tecnologias em execução nos desktops e servidores. A maior parte das ferramentas de gerenciamento de sistemas, como o SMS da Microsoft, tem a capacidade de emitir esses relatórios automaticamente.
Depois, replique as aplicações e tecnologias em um ambiente de plataformas. Se o seu sistema operacional e seu software de infra-estrutura não incluírem testes para correções, obtenha uma solução separada, como a Flexnet AdminiStudio ou o Wise Package Studio.
De maneira alternativa, você pode escrever alguns scripts para exercitar funcionalmente a plataforma ou a tecnologia com as últimas correções em vigor. Você precisará repetir esse cenário (e ajustar os scripts) assim que novas correções chegarem e que mudanças nos softwares forem feitas. Ao final, o passo crucial é executar vários testes de carga com as novas correções já implantadas. Geralmente, as correções mostram-se problemáticas somente sob muito tráfego.
11-) Mantendo a temperatura certa
Pode parecer óbvio, mas problemas ambientais em salas de servidores e nas instalações elétricas podem ter um sério efeito em todo o desempenho da rede. Servidores aquecidos não são servidores felizes, e o mesmo vale para hardware de redes. Certifique-se de que seu datacenter não está nessa situação, e instale sensores ambientais para afastar esse cenário.
Também é sempre uma boa idéia alavancar as utilidades de gerenciamento de servidor que podem vir com os seus servidores. Sistemas como OpenManage, da Dell, e o Insight Manager, da HP, fornecem dados muito pertinentes sobre a saúde e o bem-estar de sua infra-estrutura de servidores.
12-) Reinando no território dos espelhamentos e replicações
A redução de desempenho geralmente afeta empresas que utilizam espelhamentos ou replicações para garantir alta disponibilidade ou recuperação de dados em pontos distintos. Se você tem vários pontos ou muitas tabelas em seus bancos de dados – ou mesmo muitas transações que precisam estar sincronizadas entre essas múltiplas localidades – preste atenção, porque a perda de performance pode ser dramática.
Se possível, execute seu processo de espelhamento e replicação em sinais WAN separados, a fim de mantê-los isolados da produção de tráfego. Ao mesmo tempo, vá à configuração que você pretende utilizar para suportar o espelhamento e a replicação. Representantes de fornecedores e a equipe de desenvolvimento de redes podem fornecer também configurações úteis que podem prevenir saturação de redes.
Configurações de lado, produtos de espelhamento e replicação, como WANSyncHA, da Oracle, ou High Availability Linux Project´s Hartbeat, geralmente fornecem opções para controlar o tempo e o fluxo de tráfego entre os sites. Alguns produtos permitem que você agende a atividade de sincronização durante horas, enquanto outros possibilitam ativar as tarefas de sincronização somente se um determinado limite mínimo for alcançado. Utilize esses controles; é para isso que eles foram feitos.
13-) De olho na velocidade da conexão
Um link de rede compartilhado pode ter sido, para muita gente, um dos sinônimos em agilidade. Agora, porém, é certo que traz, em alguns casos, menos da metade da banda que muitos de nós temos em casa. Os usuários estão reclamando que a banda larga em casa é mais rápida do que os sistemas corporativos? Bem, adivinhe. Uma conexão via cabo pode ser simplesmente aquilo que você precisa no trabalho. Comprar um circuito de cabo corporativo assíncrono para coexistir com uma conexão T1 pode comprometer o link da internet facilmente. O roteamento no âmago da rede direciona tráfego regular da internet para a conexão a cabo enquanto impulsiona o tráfego de maior prioridade por meio do circuito T1, trazendo o melhor dos dois mundos.
A modelagem de tráfego em um circuito de internet é realmente útil e muitos firewalls estão integrando essa capacidade, removendo a necessidade de mais hardware. Bloquear ou limitar as aplicações tidas como supérfluas no firewall pode ajudar, e implantar um servidor proxy – mesmo um proxy transparente – também pode ser benéfico. A implementação de um produto de reforço AUP, como Websense, também pode controlar o uso não-checado da internet.
Se seu website corporativo é executado em sua rede, movê-lo a um local ou ponto-hosting gerenciado, pode ser uma opção viável para aumentar o rendimento de seu circuito de internet. Os custos da colocação estão caindo e as taxas mensais sobre os servidores são razoáveis. Tirar esse esboço de seu link de conexão pode resultar em melhorias notáveis de performance. Sem dúvida, usar métricas sobre a banda utilizada pelo website é uma necessidade, mesmo antes de se tomar qualquer decisão.
14-) Estimando a velocidade futura
Uma das tarefas mais inteligentes é prever solicitações de infra-estrutura em face das demandas corporativas em constante evolução. A maior parte das pessoas começa com ferramentas de planejamento de capacidade, como a View, da TeamQuest, e produtos para modelagem. No entanto, nenhuma ferramenta sozinha pode prever exatamente a natureza do fluxo de trabalho de amanhã.
Uma pequena investigação é necessária. Mas esqueça aquele velho chapéu de detetive, ou plataformas ou ambientes fracassados e faça algumas provas de conceito. Crie um grid virtualizado e replique uma amostra representativa do fluxo de trabalho. Desse exercício, você vai obter e utilizar números para extrapolar as mudanças na performance de infra-estrutura se a topologia estiver submetendo-se a uma mudança completa.
Execute testes de base que detalhem o fluxo atual. Posteriormente, faça testes de carga que reproduzam a ação do número esperado de transações para seis meses, ou mais. Se mesmo nos testes os recursos não estiverem apresentando sua carga máxima – como aquela exigida no ambiente de produção – você pode também executar testes que reproduzam as mudanças no tipo de infra-estrutura exigidas para atender as demandas do negócio e atingir números razoáveis. Com essa informação, você deveria estar apto a projetar quando será necessário adicionar recursos para manter o desempenho nos trilhos.
15-) Recorrendo às ferramentas de perfil
Seja pró-ativo em prevenir gargalos de desempenho – incluindo um estágio obrigatório de detalhamento de perfis descritivos na última etapa do desenvolvimento, especificamente durante o ciclo de vida do software. Realizar o detalhamento de perfil em aplicações e webservices vai mostrar se seu código é realmente eficiente.
Uma ferramenta responsável por desenhar o perfil do ambiente, analisa e fornece relatórios sobre vários atributos de seu código durante seu tempo de execução. Entre outras coisas, ela pode lhe dizer quais seções do código estão demorando mais, quão efetivamente você está usando os recursos dos processadores e como seu código está utilizando a memória.
Se você utilizar alguns dos maiores Ambientes de Desenvolvimento Integrados (IDEs, em inglês), como o Visual Studio ou WebSphere Studio, essas ferramentas de análise de perfil estão incluídas. Caso suas ferramentas de desenvolvimento não incluam tais facilidades, existem outras várias soluções separadas, incluindo o DevPartner, da Compuware, e o YourKit, InfraRED e J-Sprint.
Durante o desenvolvimento, você provavelmente vai querer traçar o perfil localmente para conseguir entender como seu código está se comportando. Embora as ferramentas de perfil possam diferir muito em sua abordagem, executar o perfil local permite conhecer os agentes ou uma ampla gama de processos em sua máquina.
Posteriormente, exercite a aplicação como seus usuários fariam, interrompa o agente ou os processos, e analise os resultados. Se o seu código for distribuído para múltiplas plataformas, considere o detalhamento do perfil uma tendência durante o processo de concepção dessas plataformas.
Para cumprir isso, você precisará de agentes iniciais ou uma coleção de processos em cada uma das máquinas em que o código será executado. Depois de exercitar o código, a maior parte das ferramentas de perfis combinará dados de todos os agentes ou processos de coleção identificados no detalhamento de perfis.
Analisar os dados de todos os agentes distribuídos ou a coleção de processos vai render uma ilustração final sobre a eficiência de seu código. Utilize esse mapa como base para seus testes e obtenha melhores performances.
Com tradução do COMPUTERWORLD