Назад | Перейти на главную страницу

Рабочих NGINX недостаточно

Я не очень хорошо знаком с рабочими nginx, поэтому мне понадобится помощь. У меня два сайта на одном сервере

Второй используется для вызова API через первый и получения массива json. Это сценарий.

В http://example-second.com/api_call.php файл у меня есть

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");

В http://example.com/api.php

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"]); 

Время от времени я получаю example-second сайт NULL с ошибкой в ​​журнале

32224 # 32224: 10 worker_connections недостаточно

Я знаю, что это значит, поскольку в nginx.conf у меня есть

worker_processes auto;

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

Мой вопрос в том, как именно работают рабочие, потому что почему это время от времени происходит? Есть ли какой-то кеш или сеанс сохранения активности или что-то в этом роде? И еще один вопрос: можно ли решить эту проблему без увеличения worker_connections? Возможно, какая-то задержка с функцией curl?

Nginx имеет асинхронную архитектуру, управляемую событиями, один воркер обрабатывает несколько соединений. worker_connections - максимальное количество соединений, которое рабочий процесс может открывать одновременно. Не только клиентские, но и прокси-соединения и т. Д. У вас для этого параметра установлено очень низкое значение 10. По крайней мере, вы должны сбросить его до значения по умолчанию 512.