Marcos,

Eu vou ser bem franco contigo: não estou entendendo mais do que tu
está falando, não está fazendo o menor sentido...

Só espero que não se ofenda com o que eu vou escrever abaixo. Eu estou
tentando ajudar, mas parece que o problema não está claro, só tem
hipóteses que parecem vagas e é sobre estas hipóteses que eu vou
falar:



Vou começar pela questão da race condition.

Race condition geralmente quer dizer que algo não aconteceu na ordem
esperada quando uma parte de um sistema recebe como entrada dados que
podem ter sido modificados por outra "no meio do caminho", só que sem
garantias de que estas modificações aconteceram em uma ordem e/ou
tempo determinado.

Se isso realmente está acontecendo, é um problema da aplicação e tu
tem que falar com os desenvolvedores para ver o que está acontecendo.




Sobre o IO do disco... IO da rede eu até entenderia, mas eu não sei do
que tu está falando quando fala do IO do disco.

Se a aplicação é IO bound eu até entenderia, mas geralmente o gargalo
do PHP fica na CPU. Como não sei o que tu roda neste servidor, vou
assumir que tu conhece o que está rodando e que tem certeza que é IO
bound.

Mesmo assim, acho difícil de acreditar que alguém ofereça uma VM do
VMWare com quatro CPUs virtuais e não tenha a infraestrutura mínima
para provisionar as VMs à ponto de uma instância ser capaz de afetar
tão drásticamente outras.

Se tu mesmo gerencia o host das VMs, dá uma revisada na configuração
do VMware, por que isso não deveria acontecer. E se tu não gerencia,
fala com quem o faz por que isso é um problema um tanto grave...

Ainda sobre o IO, no gráfico que tu mandou no último e-mail mostra uma
quantia bem baixa de IO...




Eu não vou entrar no mérito filosófico do pacote vs. não pacote (a
minha posição é: eu mando o chef instalar e atualizar e não me
interessa se veio de pacote, tarball ou se o binário surgiu
miraculosamente) e da configuração das conexões do postgres por que os
números que tu falou são ridiculamente baixos para este tipo de
hardware.




Por fim, e talvez mais importante, tu ainda não falou como que os
workers do apache foram configurados.

Esta, provavelmente, é a causa do teu problema: se o apache está
configurado para iniciar um número excessivo de workers, obviamente
todos vão acabar consumindo tudo que a máquina tem e vão demorar tanto
à ponto de fazer com que o servidor deixe de responder.

Tu já tentou simplesmente reduzir o número de workers e/ou threads
e/ou processos do PHP-FPM para que seja iguál ou próximo do número de
CPUs disponíveis?

De novo, pode ter parecido bem ofensivo, mas não é a intenção, eu
estou simplesmente sendo o mais direto e objetivo possível.

-- Max


2013/12/27 Marcos Tadeu <[email protected]>
>
> Compartilhando as experiencias, já que php-5.4.22 + php-fpm + apache 2.4.7 
> deve ser novidade para muitos.
> Já funcionou, embora o problema inicial ainda não tenha sido completamente 
> domado.
>
> Estou recorrendo à lista do slackware, pois quero manter tudo pelo PKG do 
> slack e, em caso de compilar algo, ser feito com um Slackbuild. O objetivo é 
> fazer a documentação e futuros updates manterem o padrão. Gerenciar exceção é 
> complicado.
> Mas certamente seria possível usar o pecl.
>
> No entanto, diferente do que disse antes, o suporte ao postgresql funcionou 
> sim, com a extensão instalada pelo pacote gerado com o php-pgsql.Slackbuild.
> É interessante ter este pacote separado, no slackbuilds, pois o padrão do 
> slackware não tem suporte ao pgsql. Então, em prol da padronização, o tal 
> merge de Slackbuilds está descartado.
>
> Todo efeito tem uma causa... Os problemas se agravam quando erramos no 
> julgamento e pensamos ter achado a causa.
> O que me fez pensar que estava sem suporte ao pgsql, foi ter como efeito a 
> tela da aplicação mostrando que estava sem acesso ao banco de dados.
> Mas a causa real era o número de conexões simultâneas no postgresql, que foi 
> ultrapassada.
> Como? Por que?
> Minha impressão é que antes, as conexões persistentes não eram "tão 
> persistentes" ! Havia umas 15 ou 20, visto com
> ps fax
> Agora, realmente cada cliente está mantendo sua conexão permanente, e vejo as 
> 100 conexões, que era o limite.
> Passado o limite para 200, tudo funciona.
> Mas 150 conexões permanentes comem memória. Não justifica a relação 
> custo/benefício. Então, limitei o número de conexões persistentes no php.ini.
>
> Ainda tenho um problema de IO. Minha impressão é que depende de outras VMs 
> hospedadas, que podem estar carregando demais o IO em disco e falta para 
> minha máquina, aleatoriamente.
> Mas, com processos de melhor desempenho comendo menos recursos, aliado aos 
> limites impostos quanto a threads em paralelo no php-fpm, a máquina não está 
> explodindo em um race condition, e se recupera de maneira mais graciosa.
>
> abcs,

-- 
GUS-BR - Grupo de Usuários de Slackware Brasil
http://www.slackwarebrasil.org/
http://groups.google.com/group/slack-users-br

Antes de perguntar:
http://www.istf.com.br/perguntas/

Para sair da lista envie um e-mail para:
[email protected]
--- 
Você está recebendo esta mensagem porque se inscreveu no grupo "Slackware Users 
Group - Brazil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um 
e-mail para [email protected].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Responder a