iHector

iHector
Рейтинг
93
Регистрация
29.03.2013

Вы не поверите :)) Выедало память тысяча процессов sendmail и postdrop и я вообще не понимаю откуда это на новом сервере. Убил все и освободилось 7гб оперативы. htop помог заметить. Простите, видимо мало опыта на линуксах.

---------- Добавлено 24.01.2014 в 21:09 ----------

Andron_buton, спасибо, вы помогли. Оказывается видите в чем проблема была. Так что я уже скорее в канал упрусь.

iHead:
а как оно у вас обрывается?

Логи не смотрел, в заголовках failed увидел. Вообще тема не о том. Вопрос изначально звучал как делать upload грамотно на стриминг сервер. Затыки начинаются только при аплоаде частями.

Andron_buton:
Честно говоря у меня он по-умолчанию всегда віключен, и включаю его только в паре с sendfile_max_chunk 128k;
на рамдиске или ссд.

Не знаю, но проблемы имеют место быть. Обычно канал забит под 50 мбит а утром было 4-10 мбит, потому я решил сам посмотреть видео и оно оборвалось, потом опять. Убрал конфиг назад как было - все стало на места. Мне кажется мы не сможем обмануть природу винтов. Они все тормозят при одновременном read/write.

Andron_buton:
при включении aio sendfile автоматом отключается на Линукс системах

Это в курсе но сейчас я асинхронный io выключил так как видимо это причиняет обрывы. В принципе спасибо на этом. Этот весь мелкий тюнинг особо не повлиял на процесс. Все равно когда идет одновременная запись/чтение- винты начинают сильно тупить. Тут либо нужен отдельный винт для аплоада либо отдельный сервер в будущем :)

Andron_buton:
Тогда и aio on; можете оставлять.
А вообще странно, какая фс используется, какой размер кластера, какой размер страйпа у рейда, рейд кстати софтварный или хардварный?

ext4, 4096, рейд10 софтовый

zzzit:
sendfile off всегда, иначе с диска нельзя предсказуемо читать

Все советуют разное, вот обратите внимание на статью __

sendfile

Как обычно работает Web сервер, при передаче файла:

открыется исходный файл (на диске)
открывается файл назначения (сетевое соединение)
Читается блок данных, копируется в буфер и передается по назначению, пока не достигнут конец файла
Закрываются оба файла

Это означает, что происходит дополнительное копирование, которое вынужден делать Web сервер. В этом случае сервер делает системные вызовы read и write. Системный вызов sendfile служит как раз для того, чтобы избежать излишнего копирования и обеспечить прямую передачу файла. Включайте эту опцию (всегда):

sendfile on;

highload.com.ua/index.php/2009/10/31/nginx-dlya-otdaci-failov/

sendfile off; должно быть?

zzzit говорит удалять aio, Andron_buton наоборот)

Вот такая сейчас картина. Отдается 1 мб на юзера.

Конфиг пока такой

location ~ \.(flv|mp4)$ {
# searchengines example
#sendfile off;
#aio on;
#output_buffers 1 1m;
directio 1m;
# searchengines

expires max;
limit_rate_after 3m;

flv;
internal;
#access_log /var/log/nginx/flvstream-access.log main;
}

Судя по всему кушает память php-fpm. Mysql нет, это сервер чисто для отдачи видео. Настроен nginx + php-fpm, файл отдается через php скрипт. Своп по нулям. Оперативки всегда свободно 70-100мб.

free -m
total used free shared buffers cached
Mem: 7827 7690 136 0 0 5
-/+ buffers/cache: 7684 142
Swap: 0 0 0

Может стоит только через nginx отдавать минуя php скрипт? Но тогда много возможностей уйдет.

Короче явно в том конфиге где-то проблема. Обрывалась загрузка видео (failed). Так что ваш конфиг не сработал... Пока вернул все назад, оставил только directio 1m;

Andron_buton:
Сделайте так:
location ~ \.flv$ {

output_buffers 1 1m;
aio on;
directio 1m;
flv;
internal;
access_log /var/log/nginx/flvstream-access.log main;
}


Вообще плохо тут делает sendfile on; его лучше использовать только тогда, когда есть очень популярные файлы, которые полностью помещаются в оперативе.

Спасибо сделал. Сейчас посмотрю что это даст и отпишу.

---------- Добавлено 23.01.2014 в 18:36 ----------

Уменьшилась нагрузка на диски. Спасибо! Если еще будут проблемы - отпишу.

Всего: 177