我目前有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的多个实例,并将请求分散到这些实例中。 当我这样做时,我看到了性能的改善。
不过,我还是很好奇,如果还有什么可以做的,比如