nGinx 和 php-fpm 延迟响应

nGinx 和 php-fpm 延迟响应

我正在使用 PHP 5.6.X 和 nginx 1.8.0 。

Nginx配置:

user  nginx;
worker_processes  auto;

worker_rlimit_nofile 300000;
events {
    multi_accept on;
    worker_connections  6000;
    use epoll;
}

http {

    include       mime.types;
    default_type  application/octet-stream;

    sendfile           on;
    tcp_nopush         on;
    tcp_nodelay        on;
    proxy_buffering off;
    client_max_body_size 100m;
    gzip on;
    gzip_comp_level 5;
    server {
        listen 8000;
        index index.php index.html index.htm;
        root /var/www;
        server_tokens off;
        chunked_transfer_encoding off;

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_index index.php;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                include fastcgi_params;
                fastcgi_keep_conn on;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        }
    }
}

PHP-FPM配置:

pid = /var/run/php5-fpm.pid
error_log = /var/logs/php5-fpm.log
rlimit_files = 6000

[www]
user = nginx
group = nginx
listen = /var/run/php5-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.allowed_clients = 127.0.0.1
pm = ondemand
pm.max_children = 6000;
pm.process_idle_timeout = 1;
chdir = /
security.limit_extensions = .php
php_flag[display_errors] = on
php_flag[display_startup_errors] = on

我有这个 PHP 脚本

<?php

shell_exec($_POST['command']);

?>

当我发布命令时

/usr/bin/timeout 10s sleep 15

我在 10 秒后收到了来自 nginx 的响应,这是正常的并且按预期工作。

如果我运行 20 个并发连接(更多就更糟了),所有这些请求都会在 20 秒后完成。时间几乎翻倍了。而且只有 20 个并发,我甚至不能称之为洪水之类的。

我使用找到的工具同时运行 20 个连接,甚至还使用 curl Multi Thread 创建了自己的连接。所有连接的响应都相同... 20 秒。如果我同时运行 50 个连接,30 秒后就会收到响应。

我是否遗漏了什么,或者是正常的...如果是正常的,为什么是正常的? :/

相关内容