优化用于EndLessstream的Nginx / php-fpm

我目前有NGINX + PHP-FPM,提供无尽的MPEG-TS文件。

PHP读取文件,将它们发送到nginx,并将nginx发送到客户端。 这个过程是无止境的,因为正在生成MPEG-TS文件,所以请求不会closures,除非服务器上的streamclosures。

这个performance很好,但是我想知道是否有什么事情可以提高我的performance,因为我确定这不是最好的。

对于logging,我有〜1000个并发连接,PHP-FPM是按需设置的。

这是我的nginxconfiguration

user nginx; worker_processes auto; worker_rlimit_nofile 300000; events { worker_connections 16000; use epoll; accept_mutex on; } http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; gzip off; fastcgi_read_timeout 200; access_log off; keepalive_timeout 10; client_max_body_size 20m; include balance.conf; send_timeout 20m; limit_req_zone $binary_remote_addr zone=prot:30m rate=10r/s; server { listen 5050; index index.php index.html index.htm; root /var/www; server_tokens off; chunked_transfer_encoding off; if ( $request_method !~ ^(GET|POST)$ ) { return 200; } location ~ \.php$ { limit_req zone=prot burst=10 nodelay; try_files $uri =404; fastcgi_index index.php; fastcgi_pass php_socks; include fastcgi_params; fastcgi_buffering off; fastcgi_buffers 96 32k; fastcgi_buffer_size 32k; fastcgi_max_temp_file_size 0; fastcgi_keep_conn on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; } } } 

balance.conf

 upstream php_socks { least_conn; server unix:/var/sockets/prv8HH.sock; server unix:/var/sockets/yyirxh.sock; server unix:/var/sockets/6ld67z.sock; } 

php-fpm config(x 3)

 [global] pid = /var/php-fpm/pids/yyirxh.pid events.mechanism = epoll daemonize = yes rlimit_files = 4000 [nginx] user = nginx group = nginx listen = /var/sockets/yyirxh.sock listen.allowed_clients = 127.0.0.1 listen.owner = nginx listen.group = nginx listen.mode = 0660 pm = ondemand pm.max_children = 4000 security.limit_extensions = .php pm.process_idle_timeout = 3s 

从上面的configuration中可以看到,我正在运行PHP-FPM的多个实例,并将请求分散到这些实例中。 当我这样做时,我看到了性能的改善。

不过,我还是很好奇,如果还有什么可以做的,比如

  • 添加nginx线程池? 说得通?
  • 发送文件到ON是否有意义?
  • 将有意义的改变sendfile_max_chunk,为什么?
  • 如果我启用它,NGinx aio会影响到什么吗? 说得通?
  • 还有什么我错过了?