aplicativo ruby-on-rails usando o servidor webbrick lento em algumas máquinas

1

Eu tenho um aplicativo ruby-on-rails bastante simples desenvolvido no mac, que foi colocado em produção em um servidor web debian. O aplicativo da web usa o servidor webbrick padrão fornecido para executar o aplicativo.

O aplicativo é executado rapidamente na minha máquina e em muitos outros na minha área. No entanto, é lento em algumas máquinas. De acordo com os logs fornecidos pelo webbrick, as páginas são renderizadas em milissegundos, mas nas máquinas que são lentas, leva de 15 a 20 segundos para a máquina obter a mensagem para renderizar a página.

Eu pesquisei as soluções disponíveis sobre o que poderia estar causando isso, mas nenhuma delas retornou uma solução viável no meu caso.

Neste momento, estou pensando em mudar meu servidor para o Apache para executar meu aplicativo, mas não tenho certeza se o mesmo problema persistirá porque não sei qual é o problema. Alguém tem alguma sugestão?

Algumas informações sobre as máquinas que testei em:

3 Mac Pro (Mac OSX) - Todos executam o aplicativo rapidamente. Os computadores estão conectados dentro da nossa rede de usuários

1 Mac Air (Mac OSX) - é executado rapidamente. Conectado dentro da nossa rede

1 Macbook Pro (Mac OSX) - Funciona de forma bastante lenta, mas não mais lenta. Não conectado dentro de nossa rede

1 Dell Laptop (Ubuntu) - O mesmo desempenho do Macbook Pro

1 Dell Workstation (Windows) - O mais lento de todos. Lagtime grande nas páginas. Conectado dentro da nossa rede. Esta é a máquina que precisamos para ser rápida.

1 Dell Desktop (Windows) - Outra máquina lenta. Conectado dentro de nossa rede

    
por DashControl 11.12.2013 / 17:13

2 respostas

2

O problema não é que em suas máquinas devs o servidor está aceitando apenas uma solicitação e em produção está aceitando várias solicitações simultâneas?

De qualquer forma, Webrick não é um bom servidor para ambientes de produção. Eu prefiro Unicorn ou Puma, mas o Passenger é uma boa opção também e mais simples de configurar.

    
por 16.12.2013 / 03:53
1

Como seu aplicativo funciona em várias estações de trabalho, é provável que a lentidão seja causada por um problema nas estações de trabalho com problemas.

Assumirei que seu aplicativo é executado de forma consistente em cada máquina, ou seja, nas máquinas em que ele é executado rapidamente, ele sempre é executado rapidamente.

Quais são as diferenças em hardware de computador, sistema operacional, software e rede entre os computadores em que ele funciona e os computadores em que o aplicativo não funciona? Se os computadores em que o aplicativo não funciona estiverem todos em uma sub-rede diferente, pode haver um problema de roteamento ou um alto congestionamento de rede nessa sub-rede. Se eles estiverem executando um sistema operacional antigo ou um navegador mais antigo, talvez eles não sejam totalmente compatíveis com o código do seu aplicativo. Se eles estiverem executando tarefas em segundo plano adicionais ou tiverem uma pequena quantidade de RAM ou espaço livre em disco, resolva esses problemas e tente novamente.

Existem muitas variáveis no design da web que podem afetar o desempenho, mas no seu caso, acho que as indicações são de que é um problema do cliente e não um problema do servidor. Naturalmente, qualquer desenvolvedor sabe que o código sempre pode ser melhor otimizado. Mesmo que isso seja um problema do cliente, um código otimizado no seu aplicativo pode melhorar o desempenho desses clientes. Vá até o SO para obter ajuda com isso.

Se o seu aplicativo não for executado de maneira consistente em cada máquina, se ele for executado lentamente em uma máquina em que ele foi executado rapidamente, talvez haja um problema no servidor a ser resolvido. Nesse caso, verifique sua CPU, RAM e uso de rede e correlacione isso com o desempenho lento do aplicativo. Seu servidor da Web pode estar processando o aplicativo rapidamente, mas depois atingiu um gargalo na entrega. Você pode sempre tentar no Apache e ver se isso resolve o seu problema (o Apache é gratuito e relativamente fácil de configurar, então não é difícil usá-lo apenas como um teste).

    
por 11.12.2013 / 17:35