оптимізувати nginx для завантаження великих файлів


3

Привіт, мені цікаво, які основні параметри я повинен розглянути для оптимізації сервера nginx для завантаження великих файлів (як правило, від 100 Мб до 6 ГБ). Я щойно перейшов з lighttpd і помічаю, що під час завантаження швидкості дуже швидко коливаються. Мені знайомі швидкості коливання, але не з такою швидкістю, lighttpd не коливався майже так само. Мені було цікаво, чи є якісь загальні речі, які я мушу розглянути, будучи новим у nginx. Чи повинен я збільшувати кількість працівників, і т.д.

Я переглядав сторінку вікі для HttpCoreModule, і знайшов щось таке, як directioваріант:

Директива дозволяє використовувати прапори O_DIRECT (FreeBSD, Linux), F_NOCACHE (Mac OS X) або функцію directio () (Solaris) для читання файлів з розміром більше зазначеного. Ця директива вимикає використання sendfile для цього запиту. Ця директива може бути корисною для великих файлів

це був би варіант спробувати? Спасибі, хлопці, я вдячний за допомогу.

Я знаю, що моє запитання може бути досить широким, але, як я вже говорив, будучи новим у nginx, мені цікаво, які варіанти я можу шукати для оптимізації сервера для завантаження файлів. Я знаю, що різноманітність речей грає свою роль, але я також знаю, що lighttpd не так сильно коливався на точно тому ж сервері.

Дякую!

Відповіді:


2

Скільки у вас барана? Яке навантаження на вашому сервері? Чи обслуговуються лише великі файли, або також подаються менші файли та / або супутні запити?

DirectIO корисний, коли набір активних файлів більший за оперативну пам'ять, тому вони не вмістяться в кеш, а кешування їх марно - краще читати їх безпосередньо з диска і залишати кеш для чогось іншого.

Що стосується коливань - це, мабуть, викликано тим, що nginx-працівники блокують дискові операції (за замовчуванням вони синхронні). Спробуйте збільшити кількість працівників або спробуйте використовувати асинхронний введення / виведення (aio on). Але будьте обережні: занадто асинхронний io або велика кількість працівників можуть спричинити набагато більше коефіцієнт пошуку, тому загальна швидкість може різко знизитися.


Дякую! У мене 4 концерти барана. є легкий інтерфейс до нього, який є додатком рейки, але в основному він служить сховищем даних. навантаження не надто велика, окрім передачі досить великих файлів, вона не надто активна чи нічого, що використовується приблизно десятьма людьми, принаймні один з яких завантажує щонайменше один (зазвичай два) такі файли щодня. тому я не обов'язково шукаю обробляти тону одночасних завантажень у величезний файл, я просто хотів би оптимізувати передачу великого файлу. можливо, ви можете дати додаткову пораду з цією інформацією?
Хорхе Ізраїль Пенья

Гаразд, тоді ви можете спробувати встановити кількість працівників максимальною кількістю одночасних завантажень (+1 для динамічних), тому кожне завантаження може оброблятися окремим працівником. Це повинно допомогти уникнути блокування працівників на вході / виводу диска. Крім того, використовуйте directio для файлів, більших за 500 м, щоб уникнути марного дискового кеш-пам’яті.
rvs

так directio 500m; дякую людині, я спробую це.
Хорхе Ізраїль Пенья
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.