Иногда требуется симулировать нагрузку на тестовый web-сервер на основе запросов поступающих к основному серверу,
т.е. произвести параллельную отправку запросов на другой сервер
или просто повторить какой-то набор запросов на основе данных из лог-файла за определенный период времени.Для сбора информации будем использовать утилиту tcpflow (http://www.circlemud.org/~jelson/software/tcpflow/),
которая имеется в портах FreeBSD (net/tcpflow) и в составе большинства Linux дистрибутивов.
Дублирование POST запросов:sudo tcpflow -cp -i eth0 dst port 80 | grep param | while read line; \
do curl -s -- "http://duplicate.host/ask?"$line; doneДублирование GET запросов с Cookie:
sudo tcpflow -cpi eth1 dst port 80 | while read line; do
if I=`echo $line | grep "GET /url/"`; then
REQ=`echo $line | cut -b 50- | sed s@HTTP/1.1@@`;
fi;
if J=`echo $line | grep "Cookie: "`; then
COOKIE=$line;
curl -s -H "$COOKIE" -- http://server:port$REQ;
fi;
doneURL: http://asd.livejournal.com/120019.html
Обсуждается: http://www.opennet.me/tips/info/1933.shtml
А ещё есть Port mirroring.
Ну так давайте подробней об этом. А то 2 слова на английском хорошо звучат, а на практике как такое реализовать?
>Ну так давайте подробней об этом. А то 2 слова на английском
>хорошо звучат, а на практике как такое реализовать?Настраивается на свитче.
>Ну так давайте подробней об этом. А то 2 слова на английском
>хорошо звучат, а на практике как такое реализовать?Настройка коммутатора, обслуживающего веб-сервер, которая позволяет на другом порту этого коммутатора получить копию трафика на порту веб-сервера.
Если трафик небольшой, то удобно - но это только возможность получить трафик. Отдать его в веб-сервер назад таким образом не очень получится.
Назад веб-серверу? Может всё-таки веб-клиенту?Internet/LAN
|
|
коммутатор с PM=====>NAT=====>wwwtest
|
|
www
А без коммутатора?
>А без коммутатора?ебитаблес -j MIRROR
порт мирроринг не сработает для тестирования веб сервера. ибо TCP сессия не установится: или первичная или форкнутая.
nginx может такое:
http://wiki.nginx.org/HttpCoreModule#post_action