Sexta-feira, 8 Agosto 2008

Novo serviço de hosting VPS

Durante alguns anos user o serviço de VPS (Virtual Private Hosting) de uma empresa na Inglaterra, SparseZone. Onde usava um zone solaris e estava muito contente com o serviço deles.

Ocorre que o o SparseZone não vai mais oferecer o serviço (não sei o motivo), então tive de procurar outro lugar, um VPS com preço semelhante.

Então encontrei um serviço tão bom, é um VPS Linux, onde é possível escolher qual distribuição vai usar (Debian, Ubuntu, RedHat) em 32 ou 64 bits.

O serviço é oferecido pela empresa TekTonic, onde eles tem algumas categorias de serviços e planos. Eu peguei o Unmanaged em um plano básico, para usar neste site que está vendo agora.

No plano básico oferecem:

  • 294 MB de memória RAM
  • 13 GB de disco
  • 500 GB de taxa de transferência mensal
  • 1 endereço IP
  • 25% de uso de toda a CPU

Esta mensagem serve mais para incentivar a galera que quer ter sua própria maquina na internet, onde o preço não é caro e a experência é bem bacana.

De nenhuma maneira sou afiliado a esta empresa, nem vou ganhar desconto algum. Apenas acho que se o serviço é bom e barato, merece ser recomendado.

Eu Recomendo !

Escrito por claudio at 11:30 PM categorizado por Dicas e Scripts

Tags: dicas linux solaris

Quarta-feira, 16 Julho 2008

Jetty no Solaris 10


Segue uma contribuição que fiz para o projeto Jetty, para inicializar/parar/reiniciar o Jetty, usando o serviço nativo SMF do Solaris 10.

Os softwares necessários

Outra versão do Jetty irá funcionar, basta adaptar o script jetty.sh

Essa contribuição está no OpenSolaris e no Jetty, pelo patch 639.

A vantagem do uso do SMF que fiz

  • Uso de portas privilegiadas por usuário não root (permissão de privilégios)
  • Restar do serviço automaticamente (watchdog)
  • Padronização para o ambiente Solaris no uso do serviço


Sobre o Jetty

Para quem não conhece o Jetty, é um servidor Java, como o Tomcat. Ele é muito bom, uso-o há muito tempo, inclusive ele foi o servidor web que acompanhava o JBoss antes do tomcat. Vejam alguns usuários do Jetty.

O Jetty é reconhecido por ter baixo consumo de memória e recursos, permitir o uso da API de maneira embutida (Embedded), já usei em projetos profissionais.

De fato o Jetty é usado neste site (claudius.com.br)  e no do SouJava (soujava.org.br).


Escrito por claudio at 2:10 PM categorizado por Java

Tags: dicas java solaris

Segunda-feira, 14 Abril 2008

Javali International Meeting e OpenSolaris Day, de graça

Dicas

Javali International Meeting e OpenSolaris Day 

No dia 16 de abril, nesta próxima quarta-feira, em um pré-evento ao FISL, irá ocorrer o Javali International Meeting, uma série de palestras sobre Java com palestrantes nacionais e internacionais. Temas como OpenJDK, NetBeans, JavaFX, Glassfish bem como dois tutoriais, serão apresentados. Veja o site do evento para maiores informações.

Neste mesmo dia e loca, mas no período da tarde irá ocorrer o OpenSolaris Day, nos mesmos moldes do Javali. Com palestras sobre High Performance Computing, OpenSolaris Kernel, Virtualização de redes.

Palestrantes como Bruno Souza, Gregg Sporar, Terrence Barr e Rich Sands participarão do evento.

Não perca esta oportunidade de presenciar demos, novidades e conversar com as pessoas que participam da criação de tecnologias. 

E não esquem do evento FISL que contam com cerca de 20 palestras Java em sua programação, e minha palestra no dia 19 (sábado), sobre "Produtividade na Web com Apache Wicket"

Escrito por claudio at 5:19 PM categorizado por SouJava

Tags: eventos java javali netbeans solaris palestra soujava

Quarta-feira, 20 Fevereiro 2008

Resolvendo memory leak - Identificando o comedor de memória

Resolvendo memory leak - Procurando o devorador de memória - parte 1


Algo que vejo recorrente em fóruns e listas de discussão, colegas que perguntam para mim, é "como detectar e resolver o memory leak ?"

Começarei uma série de dicas voltados a encontrar e resolver o problema de retenção de memória (memory leak) em aplicações Java. Posteriomente, será feito um tutorial para resolver problemas de CPU.

Estas dicas podem ser úteis para programadores que ainda não passaram por este problema ou não conhecem as ferramentas. Mesmo para profissionais experientes, espero que possa contribuir.

Isso é baseado em minha experiência, em ambiente linux e solaris. Será dado ênfase no uso de ferramentas gratuitas ou de código livre, para ajudar neste processo. Para ambiente windows, onde possível colocarei as dicas aplicáveis para este SO, mas devo dizer que não tenho especialidade neste SO, portanto desconheço as ferramentas mais adequadas.

Ambiente de produção e desenvolvimento

Também será mostrado como resolver esse problema, tanto em ambiente de produção como em ambiente de desenvolvimento, com as ferramentas disponíveis em cada amviente (exemplo: invocar profiler ou debug em ambiente de produção é bastante caro em termos de performance).

É importante endender que a aplicação pode sofrer monitoramento de maneira intrusiva e não intrusiva.

  • Intrusivo: quando é necessário modificar as configurações de inicialização da aplicação para permitir uma introspecção de suas chamadas de sistemas e quando ocorre uma interceptação destas chamadas de sistemas pelo esquema de monitoramento intrusivo. Um exemplo disso são os profilers e debuggers. Isso gera penalidade em performance, modificação da configuração do ambiente e instalação de ferramentas, o que em ambiente de produção pode ser um grande problema
  • Não intrusivo: Quando é usado ferramentas de monitoramento, que não geram interceptação das chamadas do sistema, não geram impacto negativo em desempenho e não precisam de instalação de software adicional.

Existem uma série de passos, começando por descobrir onde ocorre problema de retenção, até sua resoluçao.

Qual processo do sistema operacional consome memória em demasiado ?


Este é o 1o passo, para identificar se o programa (desktop ou servidor) consome memória sem manter estável.

É importante entender que a aplicação deve ter passado por todas as etapas de criação de objetos e recursos, que já tenha passado por um ciclo de vida. Isso pode ser alcançado, navegando pela aplicação, consultando relatórios, etc.

É necessário usar apenas o SO e suas ferramentas, para descobir qual o processo está neste estado.

Ferramentas:

  • Linux: top, htop, ps
  • Solaris: prstat, ps
  • Windows: gerenciador de tarefas

Segue um exemplo de um programa que consome memória (propositadamente), e sua medição pelos respectivos utilitários do SO.

Vejam que existe um processo java que consome muita memória. O que neste caso interessa saber o PID (process ID) e a linha de comando.

Linux top

Percebe-se uma visualização com cores, linha de comando completa e ordenação diferentes, isso pode ser alcançado por atalhos

z => modifica o esquema de cores

c => mostra a linha de comando completa

shit M => ordena pelo consumo de memória

W => Torna esta configuração o padrão nas próximas invocações do comando top

O top tem uma vantagem, que ele já vem instalado em qualquer linux, então não é necessário efetuar download e instalá-lo. Já o htop, fornece uma visualização melhorada, mas é necessário efetuar download e instalar.

Para saber o consumo da memória por processo, veja na coluna RSS (ou RES), este é o valor de memória física consumido pelo processo (de fato, existem algumas discussões em fórums sobre o comando RSS ser bem uma aproximação do valor real, mas fico devendo uma explicação melhorada sobre isso em outro blog)

Linux htop

Este utilitário, fornece uma visualização melhorada sobre os processos e os recursos.

Linux ps

$ ps -eo pid,user,%cpu,rss,vsz,etime,nlwp,args
  PID USER     %CPU   RSS    VSZ     ELAPSED NLWP COMMAND
 7642 claudio   0.7 343536 658804      05:23   12 java TestReferences

A diferença do comando ps e top, é apenas a visualização, já que o ps recupera um snapshot do sistema.

O diferencial deste comando, é que mostra também a quantidade de threads por processo, na coluna NLWP.

Solaris prstat

$ prstat -s rss
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
   617 claudio   102M   78M sleep   59    0   0:00:01 2.1% java/9
   554 root      106M   32M sleep   59    0   0:00:01 0.2% ns-httpd/71
     7 root       11M   10M sleep   59    0   0:00:03 0.0% svc.startd/12
     9 root       11M 9384K sleep   59    0   0:00:07 0.0% svc.configd/17
   308 root       12M 8528K sleep   59    0   0:00:01 0.0% fmd/16
   553 root       27M 8088K sleep   59    0   0:00:00 0.0% ns-httpd/2
   618 root     8936K 4416K sleep   59    0   0:00:00 0.0% sshd/1

Foi usada a opção prstat -s rss para ordenar a apresentação baseada no consumo de memória. Outra informação é a quantidade de threads por processo, na coluna NLWP

Windows task manager


Então foi identificado qual é o sistema que consome mais memória. Com isso é possível ter um ponto de partida na análise do processo.

No próximo blog, que pretendo escrever em dois dias (espero), será mostrado como detectar se existe memory leak.

Escrito por claudio at 12:45 AM categorizado por Java

Tags: dicas java linux performance solaris

Terça-feira, 5 Junho 2007

Quantidade de threads por processo

Regularmente preciso verificar a quantidade de threads em um processo. Tanto em solaris como em linux. Coloco primeiro a versão para linux e depois a versão para Solaris.

Linux

Então coloco aqui o comando ps completo e logo abaixo um script para facilitar o monitoramento.

O comando ps

ps -p PID -o pid,user,%cpu,rss,etime,nlwp,args

Exemplo de invocação

$ ps -p 5124  -o pid,user,%cpu,rss,etime,nlwp,args
  PID USER     %CPU   RSS     ELAPSED NLWP COMMAND
 5124 claudio   8.0 122160      39:37   11 /usr/local/firefox/firefox-bin

A quantidade de threads é mostrada na coluna NLWP, que neste exemplo mostra 11 threads.

A opção -o informa quais colunas devem ser mostradas. Veja o manual do comando ps para verificar outras opções.

Note que o comando ps tem apenas uma invocação, o que torna difícil o monitoramento. Então criei um script bash, que tem as seguintes vantagens:

  • Aceita uma quantidade de repetições.
  • Repete o cabeçalho em 15 linhas
  • Aceita uma string como argumento, ao invés do nome do processo. Para não ter de ficar procurando o PID a todo momento.

threads_per_process.sh

Solaris

No solaris o comando é mais fácil: prstat

Ele aceita um parametro de repetição, que é útil para monitoramento.

Comando

prstat -c -p PID 1 3

Exemplo de invocação

$ prstat -c -p 15409 1 3
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 15409 claudio   171M  120M sleep   59    0   4:22:25 6.6% java/29
Total: 1 processes, 29 lwps, load averages: 0.25, 0.27, 0.29
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
 15409 claudio   171M  120M sleep   59    0   4:22:25 6.3% java/29
Total: 1 processes, 29 lwps, load averages: 0.26, 0.27, 0.29

A quantidade de threads é mostrada na última coluna, chamada de NLWP, ao lado do nome do binário, que neste exemplo, mostra 29 threads.

Este monitoramento permitiu que pudesse avaliar um teste de threads que precisei realizar um tempo atrás. 

Se isto é útil para você, deixe um comentário sobre como isso lhe ajudou.

Escrito por claudio at 8:25 PM categorizado por Dicas e Scripts

Tags: java solaris dicas performance linux

Quarta-feira, 21 Março 2007

Desabilitar o login gráfico no solaris 10

Tenho usado o Solaris em uma vmware, e como preciso apenas de aplicações servidoras, e poupar o uso computacional de minha maquina, então desabilito o que não preciso, como sendmail, ftp e o login gráfico.

No caso do login gŕafico, para desabilitar, basta invocar o comando svcadm, como abaixo:

svcadm disable svc:/application/graphical-login/cde-login:default

Veja outra dica para habilitar/desabilitar serviços no solaris 10 

Escrito por claudio at 1:00 PM categorizado por Dicas e Scripts

Tags: java solaris dicas

Quarta-feira, 15 Junho 2005

Lançamento do OpenSolaris.org

Ontem foi o lançamento do portal OpenSolaris.org, com código fonte (gigantesco).

A Sun, é a empresa que mais apóia a comunidade de código livre, já colocou em projeto colaborativo o JDK 6 e o J2EE 5 SDK.

Ontem (dia 14 de junho) para os primeiros 5000 registrados, ganhavam uma camiseta. Eu registrei.

Escrito por claudio at 6:54 PM categorizado por

Tags: solaris

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »