Перейти до

Веб-сервер Apache і статика


Рекомендованные сообщения

Цікаво, чи хтось умудрився розігнати апач до максимального використання ресурсів, і максимально можливої швидкості віддачі контенту?

Дивно, що апач з більшим потоком віддає згенеровані РНР дані (порядка 30 мбіт/с), аніж статичний контент (від 50 кібт до 2 мбіт). І ще не зрозуміла закономірність, в одній і тій мережі різним клієнтам різна швидкість. При тому сервер не їсть ресурсів майже ніфіга.

Зараз важкий контент віддається через ФТП, подумую про звязку з ngnix. Але все таки може є метод розгону? :)

Ссылка на сообщение
Поделиться на других сайтах

На власному досвіді - апач успішно віддавав тяжку статику на швидкостях ~600Мбіт, далі все впиралось в далеко не найкращі мережухи/вінти. Використання nginx як фронтенду до апача помітного приросту швидкодії не дало.

 

Хазяйці на замітку:

1. багато памяті (форки-форки-форки)

2. Accept-фільтри

3. ввімкнути sendfile

4. можливо ввімкнути ММ?

5. фастфорвардинг?

Ссылка на сообщение
Поделиться на других сайтах
Цікаво, чи хтось умудрився розігнати апач до максимального використання ресурсів, і максимально можливої швидкості віддачі контенту?</div>

<div>Дивно, що апач з більшим потоком віддає згенеровані РНР дані (порядка 30 мбіт/с), аніж статичний контент (від 50 кібт до 2 мбіт). І ще не зрозуміла закономірність, в одній і тій мережі різним клієнтам різна швидкість. При тому сервер не їсть ресурсів майже ніфіга.<br />

Зараз важкий контент віддається через ФТП, подумую про звязку з ngnix. Але все таки може є метод розгону?

 

Проблема при раздаче статики находится намного глубже чем настройки.

Она идет от принципа работы апача и дисковой системы. При запросе контента, апач создает тред, в котором начинает обрабатывать запрос. Если идет запрос на отдачу статики, тред апача обращается к дисковой системе, которая является самым тормозом из всех компонентов сервера (тоесть это потенциально блокирующаясь операция). В результате чего тред апача просто висит в памяти и ждет ответа дисковой системы прожирая при этом ресурсы всей системы в пустую.

 

ngnix - это синхронный сервер, с асинхронным вводом-выводом. Это значит что при запросе на статику, ngnix не создает отдельный тред или форк процесса, он якобы говорит дисковой системе: "мне нужно 100500 байт вот такого файла, когда будет готово дай знать, а я пока займусь другими делами". И все это происходит в пределах одного процесса. В результате идет экономия на оперативке и на процессоре за счет меньшего количества переключений контекста.

 

Так что не пытайтесь на белазе обогнать болид формулы 1. Под каждую задачу используйте заточенные для этого решения.

Ссылка на сообщение
Поделиться на других сайтах

Ставь сразу nginx на отдачу статики, проверено.

 

p.s. Ziki, Nginx — это асинхронный сервер ;)

Ссылка на сообщение
Поделиться на других сайтах

все всё пишут правильно, но сильно смущает такая разница отдачи статики и динамики у топикстартера. 100 мбит апач должен отдавать без особых проблем.

насколько сильно жрет апач проц и память в момент отдачи статики? если запустить закачку в несколько потоков - насколько будет меняться скорость каждого потока по сравнению с закачкой в 1 поток?

идей, честно говоря, пока нет.

Ссылка на сообщение
Поделиться на других сайтах

p.s. Ziki, Nginx — это асинхронный сервер ;)

Упрощенно говоря да.

Но если посмотреть на код nginx то видно что основные действия выполняются в пределах одного процесса, код которого является синхронным (я про низкоуровневою работу с дескрипторами ввода/вывода).

Так что все же nginx - это синхронный сервер с асинхронным вводом/выводом.

Ссылка на сообщение
Поделиться на других сайтах

все всё пишут правильно, но сильно смущает такая разница отдачи статики и динамики у топикстартера. 100 мбит апач должен отдавать без особых проблем.

насколько сильно жрет апач проц и память в момент отдачи статики? если запустить закачку в несколько потоков - насколько будет меняться скорость каждого потока по сравнению с закачкой в 1 поток?

идей, честно говоря, пока нет.

майже нічого не жере, до 1%цп, 14 мб оперативної. в момент закачки нічого не міняється. Від кількості потоків швидкість на потік не міняється.

саме дивно, що на локалхості швидкість порядка 160 мбіт/с, загрузка цп порядка 40% - тобто він може видавати більше ніж 50 кбіт) чому з інших айпі така хрєнь? Фтп з цього сервера видає 11,5 мБ\с. Може проблема не в апачі ?

Ссылка на сообщение
Поделиться на других сайтах

Похоже, что где-то просто ограничение стоит на скорость отдачи. Или в апаче (mod_bandwidth, mod_cband и т.п.) или в файрволе.

Попробуйте правда nginx поставить (все равно, лучше будет, если его потом фронт-эндом настроить) и, вырубив апач, чтобы пока не тратить время на конфигурацию, запустить его (nginx) единственным сервером и скачать что-нибудь через него. Так локализуете ограничение (апач/файрвол).

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...