8

ApacheBench を使用して負荷テストを行っています。Mac の /etc/hosts で指定された IP アドレスを使用して、ab にホスト名を解決してもらいたいです。どうすればそれを強制できますか?curl には、ここで指定されているように、まさにこれを行うための --resolve オプションがあります。abに似たものを探しています。

4

2 に答える 2

12

逆に考えてみてください。Curl に IP アドレスをヒットするように指示し、Hostヘッダーを指定して目的のドメインをトリガーすることができます。

curl example.com
curl --header "Host: example.com" 93.184.216.34

フラグをab使用しても同じ方法が機能します。-H

ab -n 10 -c 10 http://example.com/
ab -n 10 -c 10 -H "Host: example.com" http://93.184.216.34/

お役に立てれば。

編集:

@Magistar の回答に便乗して、正しいプロトコル ( httpvs https) を使用し、正しい FQD をヒットしていることを確認する必要があります。つまり、あなたのウェブサイトが応答するwww.example.comが応答しないexample.com( なしでwww) 場合は、必ず動作するものを使用してください。

注意すべきもう 1 つのことは、リダイレクトの負荷テストを行っていないことを確認することです。たとえば、abに対して実行するyahoo.com(これを行うことはお勧めしません) は良いテストではありません。詳細モードで実行した場合に確認できるyahoo.com即時リダイレクトで応答するからです。www.yahoo.comcurl

# curl yahoo.com
redirect
# curl yahoo.com -v
* About to connect() to yahoo.com port 80 (#0)
*   Trying 98.139.180.180...
* Connected to yahoo.com (98.139.180.180) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: yahoo.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Wed, 07 Mar 2018 13:46:53 GMT
< Connection: keep-alive
< Via: http/1.1 media-router-fp29.prod.media.bf1.yahoo.com (ApacheTrafficServer [c s f ])
< Server: ATS
< Cache-Control: no-store, no-cache
< Content-Type: text/html
< Content-Language: en
< X-Frame-Options: SAMEORIGIN
< Strict-Transport-Security: max-age=2592000
< Location: https://www.yahoo.com/
< Content-Length: 8
<
* Connection #0 to host yahoo.com left intact
redirect

より具体的には、これはホストを宛先 IP アドレスにスプーフィングすることに関するものであるため、次のようになります。

# curl --header "Host: yahoo.com" 98.139.180.180 -v
* About to connect() to 98.139.180.180 port 80 (#0)
*   Trying 98.139.180.180...
* Connected to 98.139.180.180 (98.139.180.180) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Accept: */*
> Host: yahoo.com
>
< HTTP/1.1 301 Moved Permanently
< Date: Wed, 07 Mar 2018 13:51:26 GMT
< Connection: keep-alive
< Via: http/1.1 media-router-fp82.prod.media.bf1.yahoo.com (ApacheTrafficServer [c s f ])
< Server: ATS
< Cache-Control: no-store, no-cache
< Content-Type: text/html
< Content-Language: en
< X-Frame-Options: SAMEORIGIN
< Strict-Transport-Security: max-age=2592000
< Location: https://www.yahoo.com/
< Content-Length: 8
<
* Connection #0 to host 98.139.180.180 left intact
redirect

そのためcurl、最初に URL にアクセスして、期待するデータが返されていることを確認してから、 に進みますab

于 2015-04-17T14:46:18.663 に答える
3

SSL ベースの Web サイトで 0 バイトを取得しないようにするには:

ab -n 10 -c 10 -H "Host: www.example.com" https://93.184.216.34/

秘訣は、サブドメイン (www) をホスト名に含めることです。

(psには、コメントとして追加するだけの十分なポイントがありませんでした)。

于 2017-09-25T02:50:33.163 に答える