NGINX worker 不够用

NGINX worker 不够用

我不太熟悉 nginx worker,所以需要一些帮助。我在一台服务器上有两个网站

第二个用于通过第一个进行 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 函数的一些延迟?

答案1

Nginx 具有异步事件驱动架构,单个工作进程处理多个连接。worker_connections是工作进程可以同时打开的最大连接数。不仅是客户端,还有代理连接等。您已将此选项设置为非常低的值 10。至少您应该将其重置为默认值 512。

相关内容