2017-01-16 13 views
1

アセットをgsutil cp -z js,css,html、 でクラウドストレージにアップロードすると、TTFB(Time To First Byte)が〜20msから180msに増加します。Google Cloud Storage TTFBがgzipで増加

これはパフォーマンスに大きな影響を与えます。なぜこれが起きて、これを解決するのか?

screenshot from google chrome with compressed assets

ここでより多くのサンプル(あなた自身を試してみたい場合はURLが、まだ有効である):gzipで圧縮されたファイルの

$ ab -c 5 -n 50 https://storage.googleapis.com/latencytest/test-raw.txt 

Concurrency Level:  5 
Time taken for tests: 2.048 seconds 
Complete requests:  50 
Failed requests:  0 
Total transferred:  45710 bytes 
HTML transferred:  8050 bytes 
Requests per second: 24.41 [#/sec] (mean) 
Time per request:  204.846 [ms] (mean) 
Time per request:  40.969 [ms] (mean, across all concurrent requests) 
Transfer rate:   21.79 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  88 117 16.7 112  160 
Processing: 21 73 112.8  36  487 
Waiting:  21 71 113.3  34  487 
Total:  122 189 118.4 146  613 


$ ab -c 5 -n 50 https://storage.googleapis.com/latencytest/test.txt 

Concurrency Level:  5 
Time taken for tests: 3.374 seconds 
Complete requests:  50 
Failed requests:  0 
Total transferred:  45150 bytes 
HTML transferred:  7250 bytes 
Requests per second: 14.82 [#/sec] (mean) 
Time per request:  337.403 [ms] (mean) 
Time per request:  67.481 [ms] (mean, across all concurrent requests) 
Transfer rate:   13.07 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  90 109 9.0 107  136 
Processing: 174 206 44.6 190  389 
Waiting:  172 204 44.3 189  384 
Total:  274 315 47.3 299  495 

カール出力:

$ curl -s -v https://storage.googleapis.com/latencytest/test.txt > /dev/null 
* Trying 2a00:1450:400e:805::2010... 
* Connected to storage.googleapis.com (2a00:1450:400e:805::2010) port 443 (#0) 
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 
* Server certificate: *.storage.googleapis.com 
* Server certificate: Google Internet Authority G2 
* Server certificate: GeoTrust Global CA 
> GET /latencytest/test.txt HTTP/1.1 
> Host: storage.googleapis.com 
> User-Agent: curl/7.43.0 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
< X-GUploader-UploadID: AEnB2UpBZ1SoG2fiD3_qSOmIWWvL86Kd-r21kXOS08UlvMOc90Eco-vd3ol3NnwDrkJKwKk7zav0ePdp9QYXm7lt4NdV39h-VQ 
< Date: Tue, 17 Jan 2017 20:44:19 GMT 
< Cache-Control: no-transform 
< Expires: Wed, 17 Jan 2018 20:44:19 GMT 
< Last-Modified: Mon, 16 Jan 2017 13:46:54 GMT 
< ETag: "88b49948e59eaad05d60a52001b50d7a" 
< x-goog-generation: 1484574414392000 
< x-goog-metageneration: 2 
< x-goog-stored-content-encoding: gzip 
< x-goog-stored-content-length: 145 
< Content-Type: text/plain 
< Content-Encoding: gzip 
< Content-Language: en 
< x-goog-hash: crc32c=MlL4Uw== 
< x-goog-hash: md5=iLSZSOWeqtBdYKUgAbUNeg== 
< x-goog-storage-class: STANDARD 
< Accept-Ranges: bytes 
< Server: UploadServer 
< Alt-Svc: quic=":443"; ma=2592000; v="35,34" 
< Transfer-Encoding: chunked 
< 
{ [261 bytes data] 
* Connection #0 to host storage.googleapis.com left intact 
+0

投稿からは明示的ではありませんが、ダウンロードリクエストに「Accept-Encoding:gzip」リクエストヘッダーが含まれていないと仮定します。これにより、gzipエンコーディングがオンザフライで削除されます(レイテンシが追加されます)。 Cf。 https://cloud.google.com/storage/docs/transcoding#decompressive_transcoding – lot

+0

私はそうは思わない、カールのヘッダーで私の最新の編集を参照してください – dkoch

+0

私はあなたがキャッシュコントロールを設定する参照してください:いいえ変換(gunzippingを防ぐ) 。これらのURLをローカルから試してみると、gzipではないバージョンがチャンクアップ(転送エンコード)されるように見えます。私はスタックのどの部分がそれをするかを見るためにもう少し見なければならないでしょう。 一方、httpsではなくhttpでa/bテストを試しましたか? – lot

答えて

1

lotは考え出したよう、Cache-Control: no-transform, publicはこの問題を解決します。

関連する問題