我创建了一个名为“Duration”的自定义响应标头,用于记录生成响应所用的时间。并且我将此标头设置为仅当提供值为“Get-Duration”的请求标头“Client”时才返回:
% telnet
% telnet> o myhost.com
---request 1
GET /index.html HTTP/1.1
Host: myhost.com
Client: Get-Duration
-----response 1
HTTP/1.1 200 OK
...
Duration: D=123123
...
使用 telnet 和上面的“Duration”标头,如何设计和进行测试来衡量 Web 服务器在请求文件时的性能?
非常感谢各位大师!!
答案1
你做错了,而且是在重新发明轮子。
只需使用 curl:
curl -s -H "Client: Get-Duration" -D /dev/stdout -o /dev/null http://www.yoursite.ca | awk '/^Duration: / {print $2}'
如果您的系统在您仅发出 HEAD 请求时返回用于呈现页面的正确 Duration 值,那么您可以简化此操作:
curl -s -H "Client: Get-Duration" -I http://www.yoursite.ca | awk '/^Duration: / {print $2}'
答案2
我认为这样的事情会起作用:
#!/bin/sh
timeout=10
tracefile=/tmp/.telnettrace
HOST=$1
telnet_commands() {
tout=${timeout}
echo open $1 80
sleep 1
while [ "$tout" -ge 0 ]
do
if tail -1 $tracefile 2>/dev/null | grep "character" > /dev/null
then
echo "GET /index.html HTTP/1.1 Host: myhost.com Client: Get-Duration\n"
tout=-15
continue
else
sleep 1
tout=$[$tout-1]
fi
done
tout=${timeout}
while [ "$tout" -ge 0 ]
do
if tail -1 $tracefile 2>/dev/null | grep "^$" > /dev/null
then
tout=-15
continue
else
sleep 1
tout=$[$tout-1]
fi
done
}
telnet_commands $HOST | telnet |tee $tracefile