Como usar a largura de banda total disponível?

0

Estou trabalhando em um novo tipo de servidor proxy usando node.js. Com o módulo de cluster eu sou capaz de bifurcar o processo (que são o dobro do número de núcleos). A configuração do servidor é de 8 GB de RAM, 8 processadores Intel (Xeon) e tem um limite de largura de banda de 500 MB por mês e é o Ubuntu Precise Machine. No entanto, nem toda a largura de banda que podemos usar. O que nossos usuários estão usando é de apenas 30MB por dia. Queremos que nossos usuários usem largura de banda total, mas eles não são capazes de usar e até mesmo a 30 MB de limite a velocidade é lenta, porque o servidor node.js está reiniciando a cada 10 minutos (tempo médio) devido à falta de sockets.

Sockets estão parados devido a algumas exceções não identificadas em node.js e node.js tende a não responder e vai para loop infinito, então um dos processos do cluster morre e eu vejo a contagem de clusters (tudo é bom em 16 processos ), se o número de processos de node.js cair para 14, haverá um cronjob, que mata todo o node.js e reinicia todo o script de proxy.

Eu modifiquei o sysctl.conf e também o limits.conf. Aqui estão os arquivos (sysctl.conf) link e limits.conf link , por favor me sugerir se eu estiver errado nessas configurações. Eu sou novo no ajuste de largura de banda dos servidores linux, por favor me avise, se eu estiver fazendo ou faltando alguma coisa

Obrigado Sai

    
por Saikrishna 04.08.2014 / 10:14

3 respostas

1

Eu suspeito que há uma confusão de termos aqui, causando confusão sobre o que você está tentando resolver.

Um provedor de serviços de hospedagem geralmente oferece uma quantidade de tráfego (geralmente chamada de largura de banda) por mês. Isso pode ser de 500 MB ou 1 TB, etc, dependendo do plano oferecido. Se essa "largura de banda" for muito baixa, você pagará o serviço de hospedagem pelo consumo excessivo de tráfego. De modo geral, seu objetivo como desenvolvedor de aplicativos é manter baixa a quantidade de dados enviados e recebidos por usuário, porque, na maioria dos casos, menos dados e a mesma ou melhor satisfação do usuário e transações significa que você não está enviando dados em excesso incorrer em encargos para o negócio (que é uma regra muito geral e facilmente quebrado com contraexemplos; o princípio de não enviar dados extras desnecessários é bom, no entanto).

Os usuários do serviço da Web também precisam de largura de banda, conforme mais convencionalmente definido - a quantidade de dados transmitidos por intervalo de unidade, geralmente medida em bits por segundo. Isso também costuma estar sujeito a limites do seu provedor de serviços de hospedagem, porque você está compartilhando com outras pessoas e porque a conexão delas com a Internet será limitada, em algum momento. Dentro do serviço de hospedagem (entre máquinas) você pode estar olhando para 1Gb / s (1.000.000.000 bits por segundo). Seu serviço de hospedagem pode ter um limite de 30MB / s (pequeno serviço de hospedagem, não próximo ao backbone). Não existe uma relação clara entre essa largura de banda "instantânea", a taxa máxima de burst que você envia e o uso mensal de dados (a largura de banda de hospedagem mensal). Você pode estourar dados em alta velocidade, mas usar apenas uma pequena quantidade. OTOH, se sua velocidade máxima é baixa, então você não pode exceder a largura de banda mensal ... Mas antes disso é um problema, você terá usuários reclamando sobre o desempenho.

E isso, provavelmente, é o verdadeiro problema aqui. Atuação. Eu suspeito que os clientes estão reclamando que as coisas não são rápidas o suficiente. Isso leva a olhar para a largura de banda. Mas não é o problema. O problema de desempenho é que seus servidores estão bloqueando. Quando um usuário faz uma solicitação, o servidor inicia o processamento, trava e, em seguida, o cliente atinge o tempo limite. O usuário vê um serviço ruim e você otimiza ... o que?

Você optou por otimizar a velocidade da transmissão de dados. Mas isso provavelmente não é o problema. Um serviço com falha é o problema. Corrigir o aplicativo e, em seguida, os clientes não mais tempo limite. Não é uma questão de quantos dados, e quão rápido, como o tempo de espera, representa uma barreira absoluta para o progresso do trabalho, em qualquer nível de largura de banda.

    
por 13.08.2014 / 10:23
1

Se o seu subsídio mensal for de 500 MB e você estiver usando 30 MB por dia, você já estará excedendo seu limite. 30MB x 30dias = 900MB. Esse não é o problema aqui, de qualquer forma.

Parece que o problema básico é o aplicativo node.js, e não o servidor. Você não deveria precisar fork node.js, já que qualquer tarefa de bloqueio substancial deveria ser dividida em uma tarefa assíncrona. Você perde a maioria dos benefícios de executar node.js em servidores monolíticos usando multiprocess como seu principal mecanismo de distribuição. O principal loop de evento node.js deve sempre ser capaz de receber conexões, e as exceções devem sempre ser tratadas, ou pelo menos executar a limpeza (nesse caso, fechando soquetes e retornando ao loop de eventos).

Na verdade, se as exceções estiverem causando a morte de qualquer aplicativo, o problema é o aplicativo, e não a máquina em que ele está sendo executado. Se estivermos falando de taxa de transferência de largura de banda, um enforcamento de aplicativo limitará severamente a eficiência das conexões que estão sendo processadas.

    
por 11.08.2014 / 23:27
0

Largura de banda é um termo geral que pode significar quase qualquer coisa. Não vejo por que você usaria sua largura de banda totalmente.

Existem dois tipos que você pode procurar:

Quantidade de transferência de dados que você pode fazer no seu site.

Quantidade de dados que podem passar em um determinado momento. Usado em comunicações e redes. Ter uma largura de banda maior do que a necessária permite suavizar os picos de uso.

Se os dados forem atrasados ou perdidos, os buffers do servidor de dados poderão estar obstruídos e não aceitarão nenhuma nova solicitação. Eles estarão em um estado sem trabalho.

    
por 08.08.2014 / 03:43