Как обрабатывать запросы дважды в Apache
Чтобы выполнить реалистичные тесты для нового внутреннего сервера, я хотел бы обработать все запросы Apache дважды.
Просто обработайте все активные запросы со старым сервером, как это делается прямо сейчас, но затем также "продублируйте" запросы к другому виртуальному хосту, на котором развернут новый сервер, который обработает запрос и зарегистрирует ответ.
Какой лучший / самый простой способ достичь этого в Apache? (бэкэнд - это процесс FastCGI)
2 ответа
Я не знаю, что вы можете заставить Apache делать это "вживую" - в общем, все в Apache настроено так, чтобы обрабатывать любой данный URL только один раз. Возможно, вы сможете что-то сделать на уровне балансировки нагрузки или на сетевом устройстве, если вы убедитесь, что ответ не отправляется и клиенту...
Другой способ сделать это - сохранить действительно полный журнал Apache, а затем воспроизвести его на своем тестовом сервере с помощью JMeter ( http://jakarta.apache.org/jmeter/usermanual/component_reference.html). Я не думаю, что Вы можете делать полезные нагрузки POST, но в остальном это достойный подход.
Единственный способ сделать то, что вы просите, - это настроить прокси-сервер для дублирования запроса и отправки его на второй сервер (а затем записать / выбросить ответ второго сервера, так как я предполагаю, что вы не хочу отправлять его конечным пользователям).
Это большая работа, если все, что вы делаете, это тест производительности и предложение Эрнеста JMeter или что-то подобное (Apache's ab
Утилита, LoadRunner($) или несколько простых сценариев на Perl, вероятно, лучше: вам важно то, как он обрабатывает пиковую нагрузку и где находится этот пик (т. е. "он быстрее / медленнее / такой же по сравнению с текущей системой и может он обрабатывает больше / меньше / ту же работу).
Если вы пытаетесь провести "дымовое тестирование" системы, чтобы выявить ошибки / проблемы, которые вы действительно хотите построить, и использовать набор тестов, предназначенный для выявления проблем, а не полагаться на производственные данные для выявления каждого конкретного случая.