Número máximo de processos em execução simaltenous [closed]

0

O kernel diz que pode suportar até 32768 id de processo em /proc/sys/kernel/pid_max , mas quantos processos meu servidor pode manipular simultaneamente sem reclamar sobre recursos ou travar meu servidor,

Eu sei que depende de cada comportamento de processo e recursos necessários, mas existe algum tipo de equação que tenha alguns parâmetros como Ram, cache, núcleos de cpu ... etc?

Editar:

Meu servidor está hospedado no Linode com as seguintes especificações:

RAM: 12 GB
CPU: Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
cpu MHz     : 2499.970
cache size  : 4096 KB
Cores: 6 cores

Meu servidor tem algumas versões antigas que executam meu aplicativo

Apache 2.2 
mysql 5.5
php 5.3
php5-fpm
    
por MohammedSimba 12.02.2017 / 18:15

3 respostas

3

Existe uma fórmula para calcular o número máximo de PIDs ou threads ativos. Excerto de kernel/fork.c :

/*
 * set_max_threads
 */
static void set_max_threads(unsigned int max_threads_suggested)
{

    u64 threads;

    /*
     * The number of threads shall be limited such that the thread
     * structures may only consume a small part of the available memory.
     */
    if (fls64(totalram_pages) + fls64(PAGE_SIZE) > 64)
            threads = MAX_THREADS;
    else
            threads = div64_u64((u64) totalram_pages * (u64) PAGE_SIZE,
                                (u64) THREAD_SIZE * 8UL);

    if (threads > max_threads_suggested)
            threads = max_threads_suggested;

    max_threads = clamp_t(u64, threads, MIN_THREADS, MAX_THREADS);
}

No entanto, normalmente outros limites serão atingidos primeiro. Se a RAM e outros recursos durarem, os limites alguns cgroup provavelmente serão os primeiros, onde basicamente o limite é:

$ cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.max
12288

O número, 12288, é o mesmo em meu servidor mais antigo de 3 gigabytes e em meu servidor mais recente de 16 gigabytes.
E posso testar tentando extrair mais do que o número máximo, resultando em uma mensagem em /var/log/kern.log :

Feb 12 15:49:11 s15 kernel: [  135.742278] cgroup: fork rejected by pids controller in /user.slice/user-1000.slice

E verificando o número que eu tinha no momento:

$ cat /sys/fs/cgroup/pids/user.slice/user-1000.slice/pids.current
12287

top disse sobre 12479

Mas depois que esses processos terminaram, recebi:

$ cat /sys/fs/cgroup/pids/user.slice/pids.current
15

top disse cerca de 205 e nota: 12479 - 205 + 15 = 12289

    
por Doug Smythies 13.02.2017 / 02:13
2

A resposta pode ser de milhares, centenas ou dez. Isso dependeria dos recursos do seu computador e do que os processos estão realmente fazendo.

A melhor coisa que você pode fazer é executar seu servidor, estudar os recursos e aumentar os recursos com base no uso do seu servidor.

Os recursos dependem em grande parte da velocidade e memória RAM do computador. O RAM permite entregar mais processos na memória, enquanto a velocidade permite o processamento rápido das tarefas e, em seguida, passa para o próximo processo.

Se a carga do seu sistema for 1.00 (pode ser verificada executando top da linha de comando), então ela está basicamente rodando com total cumplicidade. Qualquer coisa sobre isso é um estouro com o qual o computador está trabalhando para acompanhar. Se a carga fica muito alta, é claro, pode levar muito tempo para recuperar o atraso, que basicamente seria bloqueado.

A propósito, o 1,00 é por processador. Então, se você tem um processador de 4 núcleos, a carga estaria cheia às 4:00.

Veja este artigo para mais detalhes sobre a carga: link

Assim, você teria que estudar a carga com um aplicativo como top para avaliar os recursos necessários para executar o tipo de servidor e o tráfego que você tem em mente.

    
por L. D. James 12.02.2017 / 18:35
1

Não há outra resposta que dependa .

O que o processo faz? Dormir, esperando por algo enquanto não consome RAM? Então você pode executar 32768 processos. Ele roda tabelas enormes de banco de dados? Então muito menos.

Além disso, depende do seu hardware. Um xeon de 10 núcleos com quatro soquetes lidará com uma carga maior do que uma framboesa ...

Meu laptop tem 266 processos e uma carga de 0,66, indicando que a maioria está dormindo.

    
por vidarlo 12.02.2017 / 18:30