Здравствуйте.
Возникла проблема. Есть сервер Core 2 Duo, 2GB, 1TB RAID0, Debian.
Установлен nginx 0.6.31, PHP 5.2.6 FastCGI.
Сервер используется для отдачи больших медиафайлов (1,5 - 8 ГБ),
работает по следующей схеме: приходит запрос php скрипту, который в
свою очередь через X-Accel-Redirect отдает файл.
Канал 100Mbit, в среднем число одновременных подключений - 300, канал
забит на 70-90%.
Даже при небольшой нагрузке (меньше чем приведенные средние значения)
файлы в один поток отдаются довольно медленно ~30-50кбайт/сек, если же
качать в 5-8 потоков, то скорость увеличивается в разы.
у меня было похожее...и многопотоковая скачка была быстрее за счет
"вытеснения" других клиентов тянущих файлы в меньшее количество потоков.
Стоит убедитьтся, что тот канал, по которому вы стягиваете файл в один
или 10 потоков, не перегружен.
Извините за офф, а raid0 у вас для чего? данные гдето дублируются, я
полагаю...
Что можете посоветовать для решения проблемы с отдачей в один поток?
Читал архив рассылки, но ничего конкретного не нашел.
Конфиг следующий:
user www;
worker_processes 5;
error_log /home/nginx-error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /home/nginx-access.log main;
sendfile on;
keepalive_timeout 65;
include koi-win;
gzip off;
server {
listen 80;
server_name some.ip;
location / {
root /home/www;
index index.php index.html index.htm;
autoindex off;
rewrite "^/([0-9]{10})/([0-9a-f]{32})/([0-9a-z_]+\.[a-z0-9]{3})$"
/out.php?time=$1&key=$2&get=$3 last;
location /some_path/ {
deny all;
}
limit_except GET POST {
deny all;
}
}
error_page 400 402 403 404 405 406 407 408 409 410 411 412 413 414
415 500 502 503 504 505 http://some.addr;
location ~ \.php$ {
root /home/www;
fastcgi_pass unix:/var/run/php.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
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;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with
--enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
fastcgi_intercept_errors on;
}
}
}