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