文件不能从我的nginx通过PHP完全下载

我在我的小型服务器(BeagleBoneBlack)上有一个文件,我想下载到另一台机器上。 因此,我尝试通过PHP从我的nginx-web服务器。 文件大小约为1.2 GB,下载总是停在大约410MB。

由于两台计算机在同一个交换机后面,我不会看到连接问题。 此外,我可以排除软件问题的可能性,因为我使用不同的PHP软件进行了testing,发生同样的问题。 通过SCP下载工作没有问题。

在通过PHP下载期间,我会看到/proc/loadavg

 3.15 1.17 0.46 1/95 1163 3.15 1.17 0.46 1/95 1164 3.14 1.20 0.48 1/95 1165 3.14 1.20 0.48 1/95 1166 3.21 1.25 0.50 1/95 1167 3.21 1.25 0.50 1/95 1168 3.21 1.25 0.50 1/95 1169 3.44 1.43 0.57 1/95 1172 3.42 1.52 0.61 2/95 1175 3.42 1.52 0.61 1/95 1178 

并假设负载相当高。 因此,我怀疑nginxconfiguration不适合它运行的微型服务器。 我的nginx.conf如下所示:

 user www-data; worker_processes 1; #worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

有谁能给我一个暗示,为什么我不能下载更大的文件? RESP。 要改变什么?

更新:因为我得到*466 writev() "/var/lib/nginx/fastcgi/1/00/0000000001" has written only 1498 of 8184 while reading upstream, client:在nginx错误日志中粘贴以及configuration-settings for fastcgi_params

 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS $https; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 

PHP代码是否发送文件内容(而不是redirect到nginx直接提供的实际文件)? 看起来就是这样,因为你在下载过程中遇到高负载,表明你的服务器可能会做一些繁重的工作,而不是传递数据。

在这种情况下,您可能正在通过以下方式设置PHP执行限制:

一定要同时检查你的PHP错误日志和你的nginx日志,寻找可能发生的线索。 您可能希望增加PHP报告级别,将error_reporting php.ini指令设置为E_ALL ,并确保设置了error_log文件。

另外请记住,通过nginx提供文件通常比通过PHP发送字节更高效。 特别是如果你在小型/有限的硬件上运行。