Немедленный флаг прокси-сервера htaccess

У нас есть серия страниц, загрузка которых занимает от 10 до 30 секунд, что привело к тому, что наши соединения Apache превышают максимальное количество соединений. Поскольку эти страницы являются подстраницами нашего сайта с данными, которые не слишком важны, мы решили направить их на второй сервер, где нам все равно, будут ли задействованы/перегружены максимальные соединения.

Для этого мы использовали флаг P в нашем файле htaccess. В доке написано

Использование флага [P] подразумевает [L] — то есть запрос немедленно проталкивается через прокси, и любые последующие правила не будут учитываться.

-http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_p

Кто-нибудь знает, прерывается ли соединение на родительском сервере при срабатывании этого правила, и если да, то через какое время?

Если соединение остается открытым на родительском сервере, это бессмысленная задача. Есть ли лучший способ сделать это (помимо перезаписи медленных страниц)?

Есть ли способ отследить запрос через apache? Что-то вроде регистрации error_log в PHP.


person user3783243    schedule 10.08.2015    source источник


Ответы (1)


Это бессмысленно для сохранения потоков на сервере.

[P] означает прокси, что означает, что все время, пока вы ждете второго сервера, поток на первом сервере занят ожиданием пересылки ответа — он остается посредником.

Если клиент может напрямую связаться с сервером B, просто используйте базовое перенаправление (флаг [R]), которое, по крайней мере, переведет текущее соединение в состояние проверки активности.

person covener    schedule 14.08.2015
comment
С флагом R используется перенаправленный домен, верно? Наше текущее правило ReWriteRule ^PAGETYPE(.*)$ http://IP/PAGETYPE$1 [P]? который записывает содержимое из IP в наше доменное имя, как если бы это был один домен. - person user3783243; 14.08.2015
comment
Да, если вы перенаправляете кого-то, вы должны дать им адрес/домен, к которому они могут получить доступ. Вы не можете одновременно освободить поток на сервере 1 и не раскрывать адрес сервера 2. Вы можете разместить оба за прокси-сервером, который не связывает поток, ожидая проксируемых HTTP-ответов, например. Сервер трафика Apache или nginx. - person covener; 14.08.2015