Como maximizar a utilização do servidor fluentd?

5

Eu tenho um servidor fluente que está processando uma média de 1000 req / s. Este servidor é composto por 32 cpus. Neste servidor estão executando 32 contêineres docker fluentd com a mesma configuração. O ponto de entrada do servidor é um nginx como um balanceador de carga configurado com o algoritmo round-robin e o envia para os diferentes contêineres. Ambos, containers e nginx, escutam em 24224 / tcp.

A entrada desses nós é de 6 aplicativos C # que usam fluent-logger-csharp para enviar ao servidor fluentd . Assim, para cada aplicativo, abra uma conexão com o Fluentd Server e, devido ao grande tráfego, o aplicativo mantém o soquete aberto. Isso faz com que apenas 6 das 32 janelas de encaixe estejam processando solicitações.

Como você poderia usar melhor a utilização do servidor sem modificar o cliente C #?

    
por MiquelB 26.04.2016 / 12:28

1 resposta

1

Primeiro, gostaria de verificar quais são os gargalos:

Se o seu aplicativo não estiver sobrecarregando o fluentd service, por que usar até 32 núcleos?

Se fluentd output é o gargalo, você pode usar multi-threading com a opção num_thread ; Dessa forma, você pode querer usar 5 threads em 6 fluentd instâncias, adicionando até 30 núcleos, em vez de 32 casos únicos, onde apenas 6 são usados.

Quanto à entrada, se seus servidores mantêm as conexões abertas, então, de fato, esse é o seu afunilamento e, em seguida, você pode querer implantar mais desses serviços para aumentar o número de saídas de log para suas entradas fluentes.

    
por 07.12.2016 / 01:31