Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[6]: Проблема: upstream buffer is too small
> Либо я не понял что вы хотите, либо непонятно, где вы тут видите противоречие.
>
> Есть какой-то server, в нём есть location с proxy_pass и proxy_cache.
>
> curl дёргает урл, nginx лезет на бекенд, забирает ответ, ответ попал в кеш.
> Теперь второй бекенд (точно так же как curl) дёргает этот же урл,
> nginx отдаёт ответ из кеша.
>
Текущая схема:
Запрос
|
v
nginx
|
v
backend -----------------> service
Запрос приходит на nginx, mod_perl овый backend идет за контентом к service.
Если service тормозит, то на backend'е выстраиваются толпы апачей и всем плохо.
Но дело в том, что nginx знает с какими параметрами backend будет вызывать
service
И вызов service можно сделать из nginx. А бекенд возьмет данные из кеша nginx'а
Запрос
|
v
nginx -----------------> service
| ^
| |
v |
backend
В этом случае при торможении service бекенду плохо не будет - все "зависшие"
соединения останутся на nginx, который справляется со множеством соединений
гораздо лучше апача...
Схема словами:
1) Приходит запрос на nginx.
2) Nginx знает из запроса с какими параметрами должен сходить backend к service.
3) Nginx прокачивает свой кэш нужным запросом
4) Nginx передает запрос backend'у
5) Backend идет за контентом не к service, а к nginx в его кэш.
6) Если в кэше не оказалось данных от service, схема вырождается в первую и
фатальных ошибок не происходит.
Вот, что мне хочется.
Надеюсь, я смог донести Вам свою мысль.
С почтением,
Илья Винокуров.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|