Nginx with Lua - 全部工作进程都繁忙时如何处理连接?

我有一个运行着nginx的docker。Nginx通过Lua运行bash脚本:

    server {
      listen 80 default;

      location /sign {
        if ($arg_data = '') {
            return 404 '{"Error": "Param data is not set"}';
        }

        content_by_lua '
          command = "/root/test.sh " .. ngx.var.arg_data

          local handle = io.popen(command);
          local result = handle:read("*a");
          handle:close();

          ngx.print(result);';
      }
    }

bash脚本test.sh

#!/bin/bash

sleep 1h

echo "test"

我有8个nginx工作进程,所以在8个HTTP请求上,ps ax将打印出

ps ax

1.为什么每个工作进程都有3个进程? 2.如果我通过curl发出新的HTTP请求,我看不到错误,我看到连接挂起。如果所有工作进程都忙,谁会保持这个连接?

点赞