E assim eu mantive meu servidor estável…

Há vários meses vinha tendo problemas diários de instabilidade no servidor do Zeletron. Todo santo dia o uso de memória do servidor ia a 100% e travava tudo.

Primeiro desconfiei de ataque, mas não havia nenhum rastro de hackers ou qualquer coisa parecida. Depois me sugeriram que fosse algum pacote desatualizado fazendo uma lambança, mas a máquina está sempre atualizada com a última versão stable de tudo.

E assim foi passando o tempo… Com isso, demorei muito para descobrir que o vilão do meu servidor era o Apache que estava gastando RAM demais. A máquina já ligava com 50% da memória usada, e, com as conexões chegando ao blog, ela ia facilmente para 90% fora do horário de pico.

Depois de muito procurar no Google, encontrei a explicação para o problema e a solução. Resumindo a história, o padrão do apache é deixar um número alto de clientes simultâneos (se não me engano eram 150), mesmo que você não precise disso tudo.

A solução é reduzir esse número para o mais baixo que você puder, sempre tomando cuidado para não baixar demais e ter o efeito contrário, o de congestionar o acesso por causa de poucos clientes simultâneos.

A idéia é a seguinte, se você tem no máximo 50 requisições simultâneas, não precisa de 150 nunca. Quanto menos processos simultâneos ele abrir, menos memória ele gasta.

Mas como eu descubro quantos clientes simultâneos são necessários?

O comando apache2ctl status te diz quantas requisições estão sendo tratadas num dado momento. A idéia é pegar um horário de pico e monitorar esse dado, para ver quantas requisições simultâneas estão sendo usadas.

Vejam o exemplo abaixo:

Parent Server Generation: 5
12 requests currently being processed, 8 idle workers

KKKWWKKW_K_K___KK___............................................

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

De posse dos dados do comando apache2ctl status, descobri que 20 clientes simultâneos eram suficientes para atender o meu público. Com isso, pude configurar o arquivo apache2.conf (geralmente em /etc/apache2/) com as informações abaixo:

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients           20
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

Esse pequeno ajuste foi o suficiente para manter o servidor de pé por 15 dias até agora, com um uso de memória bem razoável, sem chegar nunca a 85%.

Pode ser que eu tenha que subir um pouco esses valores mais para frente, apesar de não ter tido nenhuma reclamação de congestionamento do blog nesses 15 dias. Mas o que interessa é que encontrei o X da questão e consegui resolver a equação sem ter que contratar mais memória ou trocar de servidor.

Veja sua partição do Linux no Windows

Outra coisa que todo mundo que tem Windows e Linux no mesmo computador precisa e procura fazer é ter acesso (ler e escrever) aos dados da partição Linux no Windows e Vice versa.

Quando você está no Linux, montar uma partição FAT32 ou NTFS é muito simples e todo mundo consegue fazer sem instalar nada. O inverso não é tão simples assim.

O Windows até hoje não tem suporte nativo a partições Ext2 ou Ext3, e, por isso, é preciso instalar um programinha que dá acesso a partições do Linux no Windows e cria um drive a mais no seu computador.

A solução para isso é o Ext2IFS, um programinha hiper simples e gratuito. Depois de instalado você verá um (ou mais) drives extras no seu Windows e poderá acessá-los normalmente, conforme as figuras abaixo.

ext2-1

ext2-2

Para baixar o programa, clique aqui.

Ele funciona sem nenhuma “malandragem” nos Windows NT4.0, 2000, XP, 2003, Vista e 2008, tanto nas versões de 32 bits quanto nas de 64 bits.

Para que ele funcione com o Windows 7, é preciso fingir que o Windows é o Vista, clicando com o botão direito no arquivo de instalação e escolhendo o modo de compatibilidade do Windows Vista, conforme a figura abaixo.

compatibilidade

Boa sorte!

O menor computador com Linux

Seguindo a dica do leitor João Bernardo, encontrei no blog Badsystem o menor computador com Linux do mundo, o Picotux.

picotux

O hardware basicamente é composto por um processador ARM 7 de 55MHz, 2MB de Flash, 8MB de SDRAM, uma interface de rede Ethernet 10/100Mbits, uma porta Serial capaz de trafegar até 230.400 bps e cinco pinos de I/O (entrada e saída).

Deixo abaixo a ficha técnica do Picotux.

Processador: 32-bit ARM 7 Netsilicon NS7520 55 MHz
Memória Flash: 2 MB
RAM: 8 MB SDRAM
Ethernet: 10/100 Mbit, HD and FD, auto sensing
Serial (TTL): até 230.400 bps
Pinos de E/S (TTL): 5
2 LEDs para Ethernet: 1 programável e outro para a portadora
Alimentação: 3,3V +- 5% / 250 mA
Sistema Operacional: uClinux 2.4.27
Shell: Busybox 1.0 e outros
Sistema de Arquivos: CRAMFS, JFFS2, NFS
Aplicações: Webserver, Telnet
Dimensões: 19mm x 19mm x 36mm (Altura x Largura x Profundidade)
Peso: 18 g
Temperatura Suportada: -40°C to 85°C

Site do projeto: http://www.picotux.com

Nos comentários do blog citado acima encontrei esse vídeo engraçadíssimo de um computador mínimo chamado Mactini (de uma tecla só). Assistam, apesar de estar em inglês é possível entender muita coisa.

Dá para viver sem Windows? Parte 1 – Crossover

Não, infelizmente ainda existem alguns programas que só funcionam no Windows, mas, 90% do meu tempo, como muitos já sabem, eu uso o Ubuntu.

Escolhi essa distribuição do Linux por causa do desenvolvimento ágil que ela tem apresentado. Outra opção que eu escolheria seria a mãe do Ubuntu, a Debian.

Essa série vai falar sobre a vida que existe além do Windows e do MacOSX. O primeiro programa que vamos falar é do CrossOver.

Eu até diria que dá para viver sem o Windows, mas não consigo viver sem o Microsoft Office. Então, como fazer para juntar as duas coisas?

O CrossOver é um programa comercial que tem por objetivo permitir que programas nativos do Windows sejam executados no Linux (no Mac também, mas não vem ao caso).

Ele é baseado no famoso Wine, um projeto opensource que tem o mesmo objetivo. (http://www.winehq.org/)

A diferença entre o Wine e o CrossOver é, basicamente, o suporte a aplicativos (Pacote Office, principalmente), a integração com o Desktop e a facilidade de instalar e desinstalar programas. Tudo isso é mais complicado no Wine.

Se você quer uma versão gratuita, o Wine é para você. Mas tenha em mente que vai gastar um bom e precioso tempo para deixá-lo configurado direitinho como o CrossOver. Pode ser que esse tempo valha mais do que os US$ 40,00 (R$ 70,00) que ele custa.

Para baixar o CrossOver, visite o site abaixo e escolha a versão.

http://www.codeweavers.com/products/cxlinux/

Depois de instalado, você poderá instalar vários programas no seu Linux, que nem sonharia em ter, tais como o MS Office (eu uso o 2007 sem problema nenhum), Photoshop, Notepad++, DreamWeaver, dentre outros. Com um pouco de paciência você consegue instalar até o AutoCAD!

Eu ainda não consigo viver sem o Windows por causa do Ovi Suite, o Nokia Software Updater e o Nokia Music. Na hora que eu conseguir instalar isso no Ubuntu, não vou mais precisar do Windows. Não que o Windows seja ruim, mas o Ubuntu roda muito mais leve do que meu Vista que veio com o Notebook.

E você? Consegue viver sem o Windows?

Console Bluetooth no Ubuntu (e outros Linux)

Até hoje eu só conseguia usar o console bluetooth do Python S60 no Windows, o que me fazia ter o desgosto de usar o Windows para fazer programas em python para meu celular.

Hoje resolvi tentar para valer e consegui rodar o bluetooth console no meu Ubuntu seguindo os conselhos do Wiki do Forum Nokia e com um pouco de paciência e persistência.

Pelo que li nos vários lugares que pesquisei, esses passos não funcionam no Ubuntu 8.04. Eu consegui fazer funcionar no meu Ubuntu 8.10 64-bits e várias pessoas relataram sucesso com o 7.04 e com o 7.10. Alguns lugares disseram que esses passos também funcionam no Debian, mas eu não testei.

OBS.: Vou colocar no tutorial abaixo alguns comandos para serem executados no terminal. Os comandos sempre estarão em negrito. Tudo que não estiver em negrito nas caixas cinza não fazem parte do comando e, por conseguinte, não devem ser digitados.

Passo Zero: Arranje um computador com Linux. Ele vai precisar também de um adaptador bluetooth interno ou um adaptador bluetooth USB devidamente instalado.

Você também precisará ter no seu celular o interpretador Python e o Python Shell instalados. Se ainda não tem esses dois programas, visite o link abaixo e instale.

http://opensource.nokia.com/projects/pythonfors60/

Passo 1:
Instale no Ubuntu os programas e bibliotecas necessárias para o funcionamento do processo digitando a linha abaixo no terminal:

~$ sudo apt-get install gnome-bluetooth gnome-vfs-obexftp libopenobex1 obex-data-server bluez-gnome bluez-utils cu

(Não se preocupe, se você já tiver tudo isso instalado, esse comando não vai fazer besteira nenhuma.)

Passo 2:
Verifique se o adaptador bluetooth está funcionando corretamente digitando o seguinte comando no terminal:

~$ hcitool dev
Devices: hci0 XX:XX:XX:XX:XX:XX

Obs.: Eu substituí o endereço dos meus adaptadores bluetooth por XX:XX:XX:XX:XX:XX

Passo 3:
Registre a porta serial:

~$ sdptool add –channel=3 SP
Serial Port service registered

Alguns tutoriais disseram não ter conseguido conectar no canal 3. Se não funcionar com o channel=3, mude para channel=2

Passo 4:
Ative a porta para ficar aguardando uma conexão:

~$ rfcomm listen rfcomm0 3
Waiting for connection on channel 3

Passo 5:
Ative o bluetooth no celular e abra o Python Shell também no celular. (Aplicativos -> Python)

Depois clique em Opções -> Bluetooth console e escolha o bluetooth do computador como padrão.

Nesse momento você receberá a mensagem abaixo no terminal do computador:

~$ rfcomm listen rfcomm0 3
Waiting for connection on channel 3
Connection from XX:XX:XX:XX:XX:XX to /dev/rfcomm0
Press CTRL-C for hangup

Se você receber uma mensagem de erro igual a essa abaixo, não se preocupe, volte ao passo 4 e tente novamente. Deve funcionar na segunda vez.

~$ rfcomm listen rfcomm0 3
Waiting for connection on channel 3

Can’t open RFCOMM device: Permission denied

Passo 6:
Abra o console serial no computador e comece a usar o python do celular pelo terminal do computador (é feio o nome desse programa, mas é esse, fazer o quê?):

~$ cu -l /dev/rfcomm0
Connected.

>>>

Para testar, execute as duas linhas abaixo para abrir uma tela de alerta no celular:

>>> import appuifw
>>> appuifw.note(u”NokiaBR”)

É isso!

Caso você consiga fazer funcionar com outra versão do Ubuntu ou com outra distribuição de Linux, comente essa postagem para nos contar a distribuição do seu Linux e o celular que você usou para testar.

Tranque seu notebook quando estiver longe

Essa é uma dica para quem tem Ubuntu no computador e se esquece de travar/trancar o notebook quando vai almoçar ou vai ao banheiro, e, na volta, encontra um fundo de tela constrangedor ou um tema cor-de-rosa instalado na sua máquina por algum engraçadinho.

O Blueproximity é um programinha muito simples mas muito útil. Ele trava a sessão do Ubuntu e chama o screensaver quando seu celular está longe do computador. O programa faz isso depois que você configura um celular com bluetooth e diz a distância que ele pode ficar do computador antes de trancá-lo. Obviamente o computador precisa ter um adaptador bluetooth instalado também, para poder reconhecer o celular quando ele estiver por perto.

Ao chegar próximo novamente, o programa destrava automaticamente o notebook, sem necessidade de se colocar senha.

Para instalar o programa, use o comando abaixo ou procure o blueproximity no Synaptic.

~$ sudo apt-get install blueproximity

O programa é completamente baseado no Gnome, não sei se funciona em Kubuntu ou qualquer outra distribuição com KDE.

A página do projeto é a seguinte:
http://blueproximity.sf.net/

Essa dica teoricamente funciona com qualquer aparelho que tenha bluetooth. Eu estou testando com meu 2760 pé de boi e ele funciona muito bem.

Caso você esteja sem o celular no momento, pode pausar o programa com o ícone que ele deixa na área de notificação do Gnomepanel.

Seguem abaixo outras configurações do programa:


Usando seu Nokia como modem 3G no Ubuntu 8.10 em 3 passos

Uma das novidades do Ubuntu 8.10, lançado no dia 31 de outubro, foi a capacidade de conectar facilmente com redes 3G através dos modems que as operadoras forncem. O que eu ainda não sabia é que também é muito simples conectar na rede da operadora pelo celular, como eu fazia no Windows antes.

Já tem um tempinho que venho usando somente o Ubuntu (antes 8.04 e agora o 8.10) como sistema operacional principal do meu notebook (tenho o Windows Vista Business Original nele, mas eu gostei muito do Ubuntu, nada contra a Microsoft). Tudo que eu preciso funciona nele, e, para quase todas as coisas que não funcionam nele, existe o Crossover para resolver o problema.

A única coisa que ainda não consegui substituir 100% foi o Nokia PC Suite, que não tem versão para Linux nem funciona no Crossover. Fora isso, até escrevi há um tempo atrás sobre como conectar seu Nokia no Linux.

Apesar de conseguir conectar no celular e fazer quase tudo que o PC Suite faz, ainda me faltava a capacidade de poder conectar via 3G, como eu estava acostumado no Windows. Pois é, faltava, não falta mais. Agora o Ubuntu 8.10 conecta direitinho.

Hoje fiz o teste: Pluguei o E51 na USB, escolhi o perfil PC Suite e segui os 3 passos abaixo, depois de clicar em System, Preferences e Network Configuration:




Depois foi só pedir para conectar pela TIM e pronto! Trinta mil vezes mais simples do que o Windows. Sem comparação!