Pergunta

Deixe-me enquadrar desta forma ..

"Say Eu tenho um servidor de aplicativos em execução em um processador single core Intel & servindo 200 usuários simultâneos. Será movendo o hardware para um sistema dual core permitir que o meu servidor de aplicativos para agora servem dizer 350 usuários simultâneos"?

A questão de base que eu estou esperando para o endereço é - "Além Can of extra de núcleos de processador ajudar a aumentar a capacidade de I / O do servidor". Porque às vezes isso é exatamente o que os fabricantes de hardware insinuar quando divulgando seus servidores multi-core.

Foi útil?

Solução

Você tem o seu perfil de servidor, determinar o seu gargalo, e tratá-los.

Se você é memória ligada, comprar mais memória ou comprar um computador com memória mais rápida.

Se você é rígido ligado e fazendo lotes de servir conteúdo estático, considere uma unidade SSD.

Se o seu banco de dados ligado, considere isso.

Mas normalmente você está "configuração obrigado", e aprimorando sua configuração de exemplo mudando o número de threads em uma piscina, ou tal, lhe dará melhoria imediata.

Muitos servidores web e bancos de dados são exatamente os softwares escritos para tirar proveito dos núcleos extra. Naturalmente, muitos também cobrar taxas de licenciamento por núcleo, por isso considero esse aspecto também.

Outras dicas

Você pode ou não ver um benefício, mas como a CPU não está realmente fazendo o I / O Eu não esperaria nenhum benefício significativo é as tarefas são principalmente I / O bound.

EDIT: Minha resposta assume que o seu código é escrito de tal forma que você está realmente utilizando múltiplos núcleos. Se não for, a sua aplicação não irá beneficiar de núcleos adicionais, mas a máquina estará melhor equipado para servir outras tarefas simultâneas.

Isso, é claro, depende de como seu servidor de aplicativos foi escrito. Se o software não utiliza técnicas de programação paralela, então você não é capaz de executá-lo em paralelo, mesmo se os suportes de hardware fazê-lo.

Se o seu servidor é único segmento (usando seleccionar IO base), e processamento do pedido é efeito colateral livre (ou seja, ele pode ser conceitualmente parallelized), então certamente em execução (combinado) várias instâncias em uma máquina multi-core irá maximizar o utilidade computacional da máquina.

Quer isto traduz-se um maior rendimento ou não é dependente de se o processamento do pedido foi CPU ligado. Como regra geral, IO é o grande gargalo em sistemas distribuídos. Mas disse que, se (request) mensagem requer montagem computação significativa, então há uma certa dada a sobrecarga da CPU por solicitação para além dos custos de IO. Ter várias CPUs ajudar seria claramente fazer a diferença nesse caso.

Para além das considerações de nível protocolo, obviamente, se o processamento de cada solicitação requer cálculos significativos, tendo um gargalo cpu terá impacto sobre a disponibilidade do servidor. Usando múltiplas CPUs vai claramente ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top