Потеря трафика из-за перенаправления или ресурсов сервера - PullRequest
0 голосов
/ 26 сентября 2019

Я не уверен на 100%, что этот вопрос принадлежит здесь или в ServerFault, но я опубликую его там, где этого хочет сообщество.У меня есть сайт, который обрабатывает тысячи перенаправлений в день.Многие из наших клиентов жаловались на то, что они теряют часть своего трафика.После тщательного изучения кода мы пришли к выводу, что трафик фактически теряется, когда мы перенаправляем:

header("Location: https://samedomain/differentpath/");
exit;

100% трафика попадает на страницу, откуда вызывается эта строка кода.Только около 60% посещений достигли https://samedomain/differentpath.

Сначала мы думали, что это проблема с сервером, поэтому мы пробовали так много разных комбинаций настроек apache и mpm_prefork, но безрезультатно.Это наша текущая конфигурация mpm prefork:

<IfModule mpm_prefork_module>
        StartServers                     5
        MinSpareServers           5
        MaxSpareServers          10
        MaxRequestWorkers         1786
        MaxConnectionsPerChild   0
</IfModule>

После некоторого тестирования и отправки большого количества трафика я заметил, что когда я отправляю трафик непосредственно с моего собственного IP, происходит 100% перенаправления.Это здорово!Возможно, я ошибаюсь, но, по крайней мере, у меня может быть немного больше уверенности, что сервер справится с этим (я тестировал с 2k посещений в течение 2-3 минут).Затем я немного изменил свои тесты, чтобы немного больше эмулировать реальный трафик, поэтому я получил список случайных прокси-серверов, и это больше походило на мой реальный трафик, где я снова терял 40% своего трафика.И все это теряется с заголовком .Я уверен на 100%, что до появления этого заголовка в ответ не отправляется больше ничего.Мы не обслуживаем контент, мы только перенаправляем.

Просто чтобы убедиться, что у меня не было проблем с содержимым ответа до того, как вышел заголовок, я начал перенаправлять с метатегами, перенаправлениями JavaScript и обновлением заголовка сте же результаты.

В качестве последней отчаянной попытки мы запустили сервер Nginx с php FastCGI.Я не был удивлен, обнаружив такие же проблемы.

Кстати, ресурсы сервера тоже не имели смысла, потому что я смотрел на процессы при отправке большого трафика, и он достиг пика при 12% ЦП и 4% ОЗУ.Вот некоторые подробности о сервере:

Ubuntu 18.04.3 (LTS) x64 6 виртуальных ЦП 16 ГБ / 320 ГБ Диск

Я должен отметить, что наш сервер БД отделен от этого, иу него те же характеристики.Мы также запустили несколько серверов и добавили балансировщик нагрузки, и мы получили (удивление) тот же результат.

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

PS: Я также просмотрел все журналы ошибок, и они были чистыми.

Редактировать:Что-то еще, что я думал, было проблемой, было источником трафика.Возможно, прокси были заблокированы моим провайдером, но если бы это было так, первоначальные посещения также не попали бы на страницу, верно?Еще одна информация, которая, на мой взгляд, может быть полезной.

1 Ответ

0 голосов
/ 26 сентября 2019

Предоставление перенаправления 301 - это инструкция для клиента, посещающего ваш сайт.Вы не можете заставить этого посетителя действительно пойти туда.Таким образом, вы никогда не получите 100% скорость перенаправления.При этом стандартное поведение для большинства человек веб-клиентов (так называемых веб-браузеров) состоит в том, чтобы следовать этой инструкции и переходить к пункту назначения, указанному в ответе вашего заголовка.Скорее всего, вы испытываете стандартный трафик ботов.Большинство ботов, хороших или плохих, ведут себя по-разному, когда сталкиваются с перенаправлением.Иногда они будут следовать, и чаще они не будут.Вы видите, что около 40% не следуют, и это будет соответствовать оценкам текущего трафика ботов (оценки варьируются от 40-60%) в Интернете.

Возможно, вы захотите проанализировать IP-адреса иПользовательские агенты в ваших журналах, чтобы определить, являются ли они из известных ботов и посмотреть, какой процент они есть.Вы также можете попробовать пакет, который поможет определить, что такое трафик, и зарегистрировать его для тестирования.Например: https://github.com/JayBizzle/Crawler-Detect Просто поймите, что никакая процедура обнаружения не будет на 100% точной.

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

...