Hotfix para ColdFusion MX 6.1 (com updater já instalado)

Mal saiu o updater do ColdFusion MX 6.1 a Macromedia já lançou um hotfix para o dito cujo. Não acho ruim, pelo contrário, mas justo agora que tinha decidido encerrar o site do pacotão? 😉

Trata-se de um hotfix bastante necessário, principalmente se o seu CFMX anda teimando em não responder à requests logo depois que o serviço é inicializado.

ColdFusion MX 6.1 Updater: Hot fix for ColdFusion not Responding to Requests

[UPDATE] Se você trocou sua JVM por alguma outra que não a que vêm por padrão no CFMX pode ser que tenha problemas com este hotfix. Portanto se for aplicá-lo (caso esteja enfrentando o problema que ele resolve) esteja ciente de que deverá usar a JVM default do CFMX.

[via Forta]


CFNTAUTHENTICATE

Forta solta mais uma pequena informação sobre o novo ColdFusion Server (codinome Blackstone): a tag CFNTAUTHENTICATE.

Hoje em dia inúmeras aplicações CF precisam ser integradas em domínios Windows 2k e 2k3 (Active Directory). Hoje em dia isso é feito através da tag CFLDAP, uma vez que o AD do Windows é compatível com esta tecnologia. Não é uma integração muito simples e muitas vezes podem ocorrer problemas de compatibilidade. Pensando nisso, os engenheiros da Macromedia vão incluir no blackstone uma nova tag (e evidentemente um novo tipo de serviço/socket) para facilitar esta integração.

Confira: Simplified Windows Authentication in Blackstone.


CFGIGOLÔ completa dois anos

A data passou e eu nem percebi, o “odômetro” já zerou de novo… O MovableType mostra por padrão o calendário de dois anos (na guia “Arquivos”) e alguns posts já não podem ser alcançados pelo mesmo.

Eis que o CFGIGOLÔ, primeiro blog brasileiro dedicado a produtos Macromedia e também o primeiro em língua não-inglesa do gênero, completa dois anos de existência. Pouco tempo, mas alguma coisa na escala de tempo da Internet, onde sites e idéias vão e vêem na velocidade dos links. Obrigado aos leitores que são o motivo principal por continuarmos escrevendo por aqui (falo em nome dos 3 autores do blog).


MT 3.1

Atualizamos o CFGIGOLÔ para o MovableType 3.1. Não sei se o software está disponível para download público ou apenas para quem possui licença paga. De qualquer maneira se você usa o dito cujo (como muitos blogueiros) trata-se de um upgrade recomendado por conta das novidades e correções diversas.

Muitas pessoas dizem que eu critico o software livre. Já disse e vou repetir quantas vezes for necessário: “Não sou contra software livre, proprietário, pirata, genérico, caro, barato, bom, ruim, etc, etc”. Sou contra imposições baseadas em ideologias, fanatismo ou preferências meramente pessoais, não levando em consideração aspectos técnicos, gerenciais e financeiros essenciais. Minha máxima é: busque o melhor custo/benefício para toda a sua solução, e não apenas para uma parte dela (ex. aquisição de licenças). Use aquilo que te atenda melhor, meça adequadamente o seu TCO (seja pessoal ou da sua empresa).

Eu sou uma prova do que digo: até hoje não encontrei um gerenciador de blogs feito em ColdFusion que seja tão bom quanto o MovableType, que felizmente roda em Linux+Apache+MySQL. Felizmente porque este trio é uma ótima escolha para ambiente web, não é a tôa que é a escolha número um em toda web (vide relatórios da Netcraft). Aliás, eu gosto de ColdFusion em Linux, gosto ainda mais em Solaris, numa máquina parruda, que tenha o Java como nativo, integrado até a raiz com o SO e extremamente rápido. Gosto do que é bom, gosto do que funciona e que, repito, em sua totalidade (não apenas em uma parte), se reverte no melhor custo/benefício para mim.

Uso o MT porque não tenho tempo e dinheiro para criar um blog feito em qualquer outra linguagem. Paguei pela licença do MT, inclusive. No belo dia em que tiver tempo sobrando (o que significa ter dinheiro sobrando também, suficiente para não precisar trabalhar) terei prazer em deixar de lado a planilhinha onde anoto minhas contas/tempo gasto para fazer minhas tarefas e me lançarei numa jornada geek, sem tempo e custo previamente determinado, em nome das minhas ideologias e dos meus devaneios intelectuais. O governo deveria pensar da mesma maneira. Se tem dinheiro e tempo sobrando (e tudo em absoluta ordem e controle, sob os trilhos), ótimo, que brinque de ideologia e de ufanismo. Caso contrário, não preciso nem dizer que pé no chão e bom senso são essenciais.

Sobre a questão técnica da adoção do SL no governo, constato algo simples, específico e bastante óbvio, compartilhado inclusive por muitos que pude conhecer dentro do próprio governo: a imposição do PHP como base para toda e qualquer (não importa como, como e porquê) aplicação web existente ou nova, em oposição ao uso de CFML. Existem outros exemplos, mas nos atemos apenas a este. Esta escolha forçada está gerando custos de desenvolvimento e manutenção muito maiores ao governo (e como conseqüência o nosso bolso). Tudo em nome de uma ideologia. Isso sem falar no fator tempo, quantidade de mão de obra necessária para se construir uma aplicação cujos requisitos são rígidos no que diz respeito não à sua funcionalidade, segurança e afins (o que realmente importa), mas sim ao tijolo que deve ser usado para construí-la, seja ele melhor ou pior, não importa. Estes detalhes técnicos não entram em questão, o que importa é a tal “liberdade”, ponto final, engula ou caia fora.

Veja (tenho que explicar toda vez), não estou dizendo: “não use PHP, use ColdFusion”. Estou dizendo: “use PHP, use ColdFusion, use o que for melhor para cada caso”. Ponto final, nosso bolso agradece.


Software livre e investimento público

Hoje encontrei na versão impressa da revista InformationWeek Brasil (Ago2004) um excelente artigo de Roberto Carlos Mayer. Artigo que expressa em poucas palavras, diretas e retas, quase tudo aquilo que penso sobre a “molecagem” que está sendo a imposição de software livre no governo brasileiro. Software livre promovido à força, sem argumentos técnicos coerentes e verdadeiramente práticos (em oposição à bela e pura teoria), no melhor estilo goela-abaixo da ditadura, é mais um devaneio ultranacionalista de quem não tem o menor comprometimento com à realidade. Não é de se espantar que venha de um governo que esteja querendo instalar no país um tal de “Conselho Federal de Jornalismo“… (sobre isso é melhor nem comentar).

Para Roberto, (…) “O simples investimento de dinheiro público em projetos de software livre não traz resultados práticos: apenas nos levará a gastar o nosso dinheiro público e continuar a pagar licenças de software estrangeiro com nosso dinheiro privado.” (…)

Eu assino em baixo. Se você também pensa assim, leia o artigo:

Software livre e investimento público


Vila Olímpia e AES Eletropaulo com ColdFusion

Estou de mudança da Vila Olímpia, bairro que morei durante os últimos três anos. Escolhi morar aqui quando casei porque é um bairro cheio de contrastes interessantes: de um lado os edifícios hi-tech (um dos quais trabalho), do outro oficinas mecânicas e sobrados antigos que me lembram muito as cidades do interior de São Paulo. As calçadas destes sobrados escondem tubos e mais tubos amarelos de fibra-óptica, de cobre, de toda sorte de materiais, que faz da “Vilompa” (como os malacos da região costumam chamá-la) a área de maior densidade e disponibilidade de conexões à grande rede. Sem falar na proximidade de quase 80% das empresas “pontocom” da cidade. Todos estão por aqui, dos grandes aos pequenos.

Mas porquê a mudança? Há tempos o Bairro perdeu seu encanto: está muito bagunçado, barulhento intransitável a pé e de carro (apesar das obras que prometem melhora isso). É o problema das baladas infinitas (de domingo-a-domingo), dos idiotas andando de harley-davidson sem escapamento as 4 da manhã, da meninada sem noção e seus carros turbinados capotando a cada esquina ou então dos que acham que impressionam meninas com o som no talo (me lembram os trios elétricos de Salvador), etc, etc. Neste exato momento estou postando aqui e escutando um buzinar frenético, provavelmente porque algum babaca parou o carro no meio da rua para conversar com alguém.

O fato é que estou indo morar numa casa que estou reformando numa área absolutamente tranquila no Morumbi. Na reforma fiz questão (além de trocar um monte de coisas, incluindo telhado) de substituir toda a parte elétrica e cabear a casa (a casa é minha e pretendo morar nela para sempre), especialmente os quartos e o escritório. Procurando por referências de um assunto que não conheço: instalações elétricas (medo de ser passado para trás pelo eletricista), encontrei o site da AES Eletropaulo, operadora de energia elétrica da região. E para minha surpresa, o site é feito em ColdFusion! 😉

http://www.eletropaulo.com.br

Vou sentir saudades da vista daqui de casa, mas não há preço para uma boa noite de sono e uma vizinhança mais amigável. 😉


ColdFusion MX 6.1 Updater lançado

Se você se lembra dos comentários que fiz acerca de uma apresentação do Ben Forta sobre o Blackstone deve se lembrar de que antes do Blackstone sair a Macromedia iria lançar um updater para o ColdFusion MX 6.1. Correções que incluem todas as disponíveis no pacotão tabajara do CFGIGOLÔ e mais algumas extras (ainda não sei quais, mas parece que sim). O já famoso (e bastante baixado) pacotão agora deixa de ter utilidade – até que se lancem novos hotfixes para o CFMX 6.1 – o que duvido muito, pois a equipe de desenvolvimento do ColdFusion está totalmente empenhada no Blackstone.

Engraçado que justo hoje eu estava me perguntando: “quando será que vai sair o tal do updater para o CFMX 6.1”?…

Bem, a resposta veio há cerca de uma hora ;-):

ColdFusion MX 6.1 Updater

Inclui diversos hotfixes (veja a lista completa aqui) e melhoras de performance. A instalação correu sem problemas aqui na minha máquina desktop (Windows XP + IIS + CFMX Stand-alone com pacotão de hotfixes instalado).

Contudo, nunca é demais lembrar: leia o Release Notes antes de prosseguir, especialmente em servidores de produção.

Dois ítens que mais chamaram a minha atenção neste updater:

1) Two attributes have been added to the cfmailparam tag to support mail file attachments: disposition=”disposition-type” and contentID=”content ID”. The disposition attribute specifies how the file content is to be handled. Its value can be inline or attachment.The contentID attribute specifies the mail content-ID header value and is used as an identifier for the attached file in an IMG or other tag in the mail body that references the file content. This ID should be globally unique.

2) Due to compiler changes in this Updater, ColdFusion application code must be recompiled to work properly. To ensure this occurs, the Updater installer renames the existing cfclasses folder, located at cf_rootWEB-INF, to cfclasses_backup. You can use the cfcompile script installed in the cf_rootWEB-INFcfusionbin directory to recompile your ColdFusion applications. Recompiling your application helps to improve initial page request time, but is not necessary for the proper functioning of ColdFusion applications.


Maximum number of simultaneous requests e ThreadTimeOut

Ainda falando de tunning de performance no ColdFusion Server. Quando você configura o seu ColdFusion para processar X requests simultâneos (veja a opção “Maximum number of simultaneous requests” dentro de “Server Settings” no ColdFusion Administrator) você está dizendo a ele mais ou menos o seguinte: “CFServer, atenda 10 requests (por exemplo) ao mesmo tempo e mande os demais esperarem na fila”.

Como o hardware do servidor é limitado em termos de recursos (CPU principalmente), fica fácil perceber que quanto mais requests o servidor tiver que atender, simultâneamente, mais lentamente ele irá fazê-lo. Eu costumo fazer uma analogia entre um ônibus e uma Ferrari. O primeiro anda devagar (se bem que isso é relativo, no Rio os motoristas dos coletivos são loucos), mas leva 40 pessoas ao mesmo tempo. A Ferrari voa, mas leva apenas 2 passageiros. Essa analogia é válida para o setting “Maximum number of simultaneous requests”. Quanto maior o número, mais lentamente o CFServer irá atendê-los. Quanto menor, mais rápido.

Mas qual é o número ideal? O número mágico é o que faz o seu servidor atender um número adequado de requests (de acordo com o seu tráfego), sem deixar muitos esperando na fila e de forma mais rápida possível. Mistura impossível? Nem tanto. O script de CFSTAT (e o CFSTAT propriamente dito) poderá ajudá-lo a chegar à melhor métrica para o seu servidor. Veja quantos requests estão rodando simultâneamente no horário de pico, quantos estão sendo “dropeados” e chegue a um número adequado, de preferência um que não deixe ninguém perder a paciência na fila (leia-se: um request dar timeout). Mas e quando você não pode (por limitações de CPU) atender todos os requests ao mesmo tempo? Simples: aumente o tempo de permanência da fila. Você já deve estar pensando: “ah, é só aumentar aquele atributo “Timeout Requests after (seconds)” na mesma seção do CFAdministrator”?. Não, este setting é válido apenas para requests que já estão sendo processados, o que não é o caso da fila de espera para processamento. Veja mais adiante:

O ColdFusion MX 6.1 trouxe uma mudança que não me agradou muito, que foi a modificação deste tempo (que era de 350ms) para apenas 20ms, muitas vezes absolutamente insuficiente. Não entendi muito bem porquê da mudança, mas me senti aliviado por saber que podemos alterá-la.

No arquivo “jrun.xml”, normalmente localizado em “cf_rootruntimeserversdefaultSERVER-INF” você vai encontrar uma entrada como esta:

<attribute name="threadWaitTimeout">20</attribute>

Basta alterar este valor (20) para um mais elevado. Eu custumo colocar 250 (o valor é expresso em ms). É tempo suficiente para que os seus usuários não “percam a paciência” esperando na fila e você tenha muito menos requests sendo negados (JRun closed connection) apesar do tempo maior para processá-los. Fica aí a dica, especialmente para quem tem máquinas cujo tráfego é bastante elevado.


Heap “agressivo” e mudanças nos settings de JVM

Semana que passou pude confirmar na prática uma valiosa dica postada há algum tempo pelo Pete Freitag: a de incluir, no startup do JVM, a opção: -XX:+AggressiveHeap em servidores parrudos. A máquina era um alucinante XSeries 225 (quem me dera ter um destes!) com 2Gb de RAM ECC e “quatro” processadores Xeon (na verdade são apenas dois processadores físicos, mas cada die leva dois processadores quase distintos, semelhante (mas não igual), ao HT do P4. E por incrível que pareça o servidor estava sofrendo (acredito que este servidor seja responsável por um dos sites feitos em CF com maior volume de visitação no país – não posso dizer qual). A melhora na performance não foi muito expressiva (não pude mensurar isso no ambiente de produção), mas o dito cujo pode respirar um pouco mais aliviado com a mesma carga.

O campo “JVM Arguments” do ColdFusion Administrator ficaria como neste arquivo txt.

Um outra pequena (mas importante) modificação que fiz pode ter auxiliado neste alívio: o ColdFusion MX 6.1 vêm com uma versão do Java HotSpot VM já relativamente antiga (de um ano). Se não me engano é a 1.4.2b28. Migrar para a última compatível e existente (1.4.2_05) ajudou um pouco creio (nem pense em usar a beta 1.5, o CF NÃO é compatível (por enquanto) com ela). Não é má idéia fazer isso em qualquer ambiente, independente da sua máquina. A mudança é bastante simples mas requer cuidado:

1) No ColdFusion Administrator, vá na opção do menu superior chamada “System Information” e veja a especificação “Java VM Version”, que deverá ser 1.4.2b28 (se não me engano);
2) Baixe a última versão do Sun J2SE no site da Sun. O J2SE é a base para o Java em qualquer aplicação baseada no Java da Sun, de desktops à servidores (J2EE), exceto aplicações “micro”, que usam um JVM especial (o J2ME));
3) Minha recomendação é de instalá-lo numa pasta simples e com nome sem espaços ou pontos (sei que não tem mais problema, mas eu sempre fui fresco com isso). Em ambiente Windows, por exemplo, instalo em “C:Java”;
4) No ColdFusion Administrator, vá em “Java and JVM” e mude o “Java Virtual Machine Path” para o novo local (no meu exemplo seria: “C:Javajre”) e clique em submit changes;
5) Páre e reinicie o ColdFusion Server. Verifique a mudança de JVM na opção “System Information” do ColdFusion Administrator (passo 1).

IMPORTANTE: caso o serviço do ColdFusion não reinicie, você fez alguma coisa errada e precisará restaurar o setting anterior. Mas como fazer isso se você não tem acesso mais ao CFAdministrator? Simples, no diretório “cf_rootCFusionMXruntimebin” você vai encontrar dois arquivos, um chamado “jvm.bak” e outro “jvm.config”. Você deverá trocar o nome deles. Renomeie o “jvm.config” para qualquer coisa (ex: “jvm.bak2”) e volte o backup, renomeando o “jvm.bak” para “jvm.config”. Pronto, o CF deve reinicializar como antes (ufa!).

Não tenho métricas sobre esta mudança com relação a estas duas JVM. Já fiz uma análise mais detalhada e técnica no passado porém para o ColdFusion MX 6.0 e trocando o HotSpot Client (padrão no MX 6.0) para Server. Mas o resultado é quase sempre certo: a mudança do JVM para um mais novo (da mesma “marca”) quase sempre resulta em melhoria de performance.

Por último, gostaria de disponibilizar um pequeno script CFML que escrevi (com base no excelente livro “Optimizing ColdFusion 5”) há muito tempo atrás, mas que funciona igualmente bem no CFMX e traz para a interface web as métricas do CFStat. Você pode vê-lo em ação aqui, numa máquina da Locaweb, e baixá-lo aqui, em formato zip (míseros 500 bytes!). Use-o, é uma ferramenta simples, mas bastante útil quando se está fazendo o tunning de servidores e aplicações em CF.


MM Technote: ColdFusion MX e o Windows XP SP2

Neste post eu relato um documento da Microsoft listando o ColdFusion como uma aplicação “incompatível” com o Service Pack 2 do Windows XP.

Apesar de ser um mero detalhe e com workaround/fix bastante simples, a resposta da Macromedia veio rápido:

Enabling ColdFusion MX and ColdFusion MX 6.1 on Windows XP Service Pack 2 with the Windows Firewall Enabled

Incluindo settings para que o servidor K2 (que acompanha o CFMX) rode também sem problemas.