Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня есть маленькая задачка. Есть веб-сервер, который кроме того что отдает статику еще и стирмит некоторые данные. Данных в рамках одного потока очень мало, но поток отдается очень долго (1-2 часа) и желающих все это получить может быть много. В итоге имеем очень много открытых tcp-оединений одновременно. Так вот, для уменьшения нагрузки на веб-сервер и прочего масштабирования нужно соорудить что-то вроде реверс прокси, который бы позволял реализовать такую схему. Когда первый пользователь отправляет http запрос на прокси, последний проксирует его на веб-сервер и обратно проксирует данные попутно их кешируя. Если в это момент (во время установленного с веб-сервером соединения) к прокси подключится второй пользователь с тем же запросом, прокси должен сразу отдать ему все что закешировал и продолжить проксировать вновь поступающие от веб-сервера данные. Каким софтом это можно было реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 08:59 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
G@rry_, стримит какие данные ? если файлы, то традиционная схема для рунета, это когда php-скрипт указывает nginx где брать файл, а тот уже отдает. Это позволяет избежать двойной буферизации файла в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 13:39 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
Стримит бинарные данные под видом бинарного файла бесконечной длинны. Но. Данные генерируются по ходу дела веб-сервером (есть специальный бекенд), т.ч. вариант с файлом не катит. Там по идее что-то вроде COMET сервера нужно было сделать, но мне было лень это все программировать, к тому же данные идут медленно но постоянно и соединение не закрывается по таймауту. Сейчас в качестве фронтенда работает nginx, но сервер у меня дохленький и поэтому nginx перестают уже справляться. Думаю чем бы его заменить, чтобы работало быстрее и чтобы позволило построить такую архитектуру при которой фронтендов могло бы быть несколько. Пока читаю ману по HAProxy, но похоже он не умеет делать то что мне нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 20:36 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
G@rry_, я так понимаю, суть не в том что nginx не справляется, а в том что для каждого соединения нужна отдельная программа постоянно генерирующая данные и именно эти программы потребляют ресурсы. такого рода сайты не вчера ведь появились. да наверняка они там свои решения уже накопили, которые прокси не являются. почему сразу прокси ? может node.js подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 20:45 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
Ну, вам конечно виднее, как у меня там на самом деле. :) Ладно если непонятно объяснил словами, то нарисую. Сейчас работает так: А должно так: Но nginx (помимо того что потребляет 100% CPU при большем количестве соединений) не умеет делать второй вариант. Точнее умеет, если включить кеширование, но тогда он сначала все закеширует и только потом начнет отдавать клиентам. А мне нужно чтобы клиенты получали данные сразу же, без задержек, и при этом прокси должен еще и кешировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 23:19 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
G@rry_, веб-кеши так не работают как можно кешировать ответ, если он еще не закончил отдаваться? откуда прокси знать, что начало запроса тоже можно скопировать и отдать другому клиенту? ни один обычный прокси этого не делает. не там ищите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 23:32 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
А 100% загрузки cpu в программах типа nginx это еще нужно умудриться сделать. Они никогда столько не жрут чистого времени на обычных серверах. Скорее всего, у вас тело ответов буферизируется на диск. Попробуйте поднять кеши и еще протянете пока все нормально не напишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2012, 23:34 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
И хотя в squid есть некий collapsed forwarding : http://www.squid-cache.org/Versions/v2/2.7/cfgman/collapsed_forwarding.html но подобная настройка подразумевает, что новый подключившийся клиент резко получит все, что старый клиент скачал ранее. Стриминга, то есть так чтобы прокси начал отдавать с "середины", не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 11:22 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловG@rry_, мультикаст изобретаете чтоли? а если и так? мультикаст в интернете запрещен Мировой Закулисой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2012, 12:30 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
Андрей ПанфиловG@rry_, мультикаст изобретаете чтоли? Да, с поправкой на жизненные реалии. Все это работает в Инете и в качестве транспорта, по разным причинам, приходится использовать HTTP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2012, 03:10 |
|
||
|
Посоветуйте реверс прокси
|
|||
|---|---|---|---|
|
#18+
netwindИ хотя в squid есть некий collapsed forwarding : http://www.squid-cache.org/Versions/v2/2.7/cfgman/collapsed_forwarding.html но подобная настройка подразумевает, что новый подключившийся клиент резко получит все, что старый клиент скачал ранее. Стриминга, то есть так чтобы прокси начал отдавать с "середины", не будет. Так мне и не нужно "с середины". Как раз нужно чтобы с самого начала. Спасибо за наводку попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2012, 03:15 |
|
||
|
|

start [/forum/topic.php?fid=25&tid=1483536]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
86ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 180ms |

| 0 / 0 |
