Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
замирает скачивание файлов
Господа, подскажите, куда копать.
Ситуация такова: имеется довольно нагруженный файловый сервис на линуксе.
nginx работает как фронтэнд: проксирует на апач практически все, кроме
мелкой статики, и работает с fastcgi для скриптов, которые используются
для собственно скачивания файлов. Файлы отдаются с помощью X-Accel-Redirect.
Трафика сейчас в районе 100 мегабит (бывает и до 115), однако периодически
возникает проблема:
скачивание файла просто застывает в какой-то момент.
Железо:
- intel core 2 quad
- 4 gb ram
- "типа железный raid" интеловый, на 3 винта, уровень 0, работающий с
помощью dmraid
uptime в районе 2, в пиковой нагрузке - около 4
sysctl:
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1800
Конфиг nginx:
=== nginx.conf ===
worker_processes 4;
worker_rlimit_nofile 10240;
worker_rlimit_sigpending 32768;
worker_priority 5;
events {
worker_connections 20480;
}
error_log /var/log/nginx/error.log;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
'"$upstream_response_time"';
access_log /var/log/nginx/access.log;
gzip on;
gzip_proxied any;
gzip_min_length 10240;
gzip_buffers 32 64k;
gzip_types text/html application/x-javascript text/css text/xml
text/plain;
client_header_timeout 60;
client_body_timeout 60;
send_timeout 120;
client_max_body_size 1800m;
client_body_buffer_size 128k;
client_header_buffer_size 4k;
large_client_header_buffers 16 8k;
sendfile on;
sendfile_max_chunk 1024k;
tcp_nopush on;
tcp_nodelay on;
output_buffers 32 256k;
postpone_output 1460;
lingering_time 30;
lingering_timeout 6;
reset_timedout_connection on;
keepalive_timeout 0;
optimize_server_names on;
proxy_read_timeout 180;
proxy_connect_timeout 60;
proxy_send_timeout 180;
msie_padding on;
proxy_buffer_size 32K;
proxy_buffers 64 512K;
proxy_busy_buffers_size 1024K;
proxy_temp_file_write_size 1024K;
server {
listen <ip_address>:80 default backlog=1024 rcvbuf=131072
sndbuf=1048576 deferred;
server_name <server_name>;
location / {
proxy_pass http://<ip_of_backend>;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header REMOTE_USER $remote_user;
proxy_set_header HTTP_COOKIE $http_cookie;
proxy_set_header REQUEST_METHOD $request_method;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /img {
root /var/www/<site>/htdocs/www;
}
location /js {
root /var/www/<site>/htdocs/www;
}
location /css {
root /var/www/<site>/htdocs/www;
}
location /favicon.ico {
root /var/www/<site>/htdocs/www;
}
location /download/ {
root /var/www/<site>/fcgi;
if ($uri ~ '^/download/(.*)$') {
set $file $1;
}
rewrite ^/download/(.*)
/download/index_dload.php?url=$file
last;
}
location ~ ^/download/.+\.php$ {
fastcgi_pass unix:/tmp/spawn-fcgi.socket;
fastcgi_index index_test.php;
fastcgi_param SCRIPT_FILENAME
/var/www/<site>/fcgi$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
}
=== nginx.conf ===
Буду очень признателен за любые подсказки.
--
Best,
Yaroslav Tarasenko aka Taras Tswiah
|