Trabalhadores NGINX não são suficientes

1

Eu não estou muito familiarizado com os funcionários do nginx, então vou precisar de ajuda aqui. Eu tenho dois sites em um servidor

O segundo é usado para fazer a chamada API através do primeiro e receber o array json. Este é o cenário.

No arquivo link que tenho

function get_curl($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, false);
    $result = curl_exec($curl);
    curl_close($curl);
    return $result;
}
$url=get_curl("http://example.com/api.php?ID=foo");

No link

function get_curl_from_api($url) {
    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $url,
        CURLOPT_HEADER=> 0,
        CURLOPT_RETURNTRANSFER=> 0,
        CURLOPT_SSL_VERIFYPEER=> 1,
        CURLOPT_SSL_VERIFYHOST=>2
    ));
    $resp = curl_exec($curl);   
      curl_close($curl);
      return $resp;    
}

$url=get_curl_from_api("https://thirdpartsite.com/".$_GET["ID"]); 

De tempos em tempos, recebo em example-second site NULL com erro no log

32224#32224: 10 worker_connections are not enough

Eu sei o que isso significa, já que no nginx.conf eu tenho

worker_processes auto;

events {
    worker_connections 10;
    multi_accept on;
    use epoll;
}

Minha pergunta é como os trabalhadores trabalham exatamente porque isso acontece de tempos em tempos? Existe alguma sessão de cache ou keep-alive ou algo assim? E outra questão é possível obter alguma solução alternativa sobre isso sem aumentar o worker_connections? Talvez algum atraso na função de onda?

    
por S.I. 01.03.2017 / 13:51

1 resposta

2

O Nginx possui arquitetura orientada a eventos assíncrona, o trabalhador único está processando várias conexões. worker_connections é o número máximo de conexões que o processo de trabalho pode abrir simultaneamente. Não apenas cliente, mas também conexões de proxy, etc. Você tem essa opção definida para um valor muito baixo 10. Pelo menos você deve redefini-la para o valor padrão 512.

    
por 01.03.2017 / 15:40