php-fpm/nginx 大量连续请求

php-fpm/nginx 大量连续请求

我正在使用 nginx/1.7.7,配置如下:

user  nginx;
worker_processes  auto;

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

http {

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

    sendfile           on;
    tcp_nopush         on;
    tcp_nodelay        on;
    keepalive_timeout  15;
    proxy_buffering off;
    client_max_body_size 100m;
    gzip on;
    gzip_comp_level 5;
    server {
        listen 80;
        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 配置(php 5.6.x)

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 = 30000;
pm.process_idle_timeout = 1;
chdir = /
security.limit_extensions = .php
php_flag[display_errors] = on
php_flag[display_startup_errors] = on

通过我的设置,我可以为客户提供实时视频文件(因此,在用户停止连接之前,请求永远不会结束)。

这里的问题是,当每秒发出许多请求时(类似于连续的,你可以称之为洪水),我的整个网络服务器变得非常慢我甚至出现多次 504 网关超时. 发生洪水时,某些请求并不完整。

例如我f 2000 个请求正在观看直播没有洪水,一切安好,,,虽然请求数没有超过每秒 400-500 个(但我再说一遍,它们是连续的but with floodeverything is becoming very very slow

我的服务器有 128 GB 的 RAM 和 38 个核心。发生洪水时,我的 CPU 甚至达不到 10%,这让我怀疑如果我的 CPU 全速读取,这个问题就不应该存在。

当发生这种情况时,我的 RAM 也处于非常好的水平。(使用率甚至不到 10-15%)。

我是不是漏掉了什么?也许 sock(php5-fpm.sock)有一些限制?我们可以提高它们吗?

谢谢问候

相关内容