如何使用telnet和自定义header来测试服务器的性能?

如何使用telnet和自定义header来测试服务器的性能?

我创建了一个名为“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

相关内容