Google Cloud CDN, тестирование производительности с использованием Apache Benchmark

Я обслуживаю статические файлы из моего приложения NodeJS, развернутого на Google App Engine, теперь я настроил балансировщик нагрузки Google Cloud (GCLB) с включенным CDN и переместил свои статические файлы в облачную корзину, используемую на бэкэнде.

Весь процесс работает нормально, однако проблема в том, что производительность не улучшилась при тестировании с использованием Apache Benchmark.

Тестирование 1000 запросов при 100 уровнях параллелизма:

Document Length:        748366 bytes

Concurrency Level:      100
Time taken for tests:   37.069 seconds
Complete requests:      1000
Failed requests:        1
   (Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Total transferred:      748686041 bytes
HTML transferred:       747940252 bytes
Requests per second:    26.98 [#/sec] (mean)
Time per request:       3706.873 [ms] (mean)
Time per request:       37.069 [ms] (mean, across all concurrent requests)
Transfer rate:          19723.87 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  446 748.1    261    9033
Processing:   397 2920 2407.1   2252   17769
Waiting:       31   85 109.7     56    1595
Total:        444 3366 2578.2   2665   18986

Percentage of the requests served within a certain time (ms)
  50%   2665
  66%   3702
  75%   4410
  80%   4937
  90%   6504
  95%   8125
  98%  10853
  99%  13447
 100%  18986 (longest request)

Тестирование 1000 запросов с 10 уровнями параллелизма:

Document Length:        748366 bytes

Concurrency Level:      10
Time taken for tests:   35.386 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      749112083 bytes
HTML transferred:       748366000 bytes
Requests per second:    28.26 [#/sec] (mean)
Time per request:       353.863 [ms] (mean)
Time per request:       35.386 [ms] (mean, across all concurrent requests)
Transfer rate:          20673.37 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       20   74  96.3     41     757
Processing:    98  278 159.5    240    2165
Waiting:       30   59  67.0     49    1915
Total:        135  352 196.6    290    2201

Percentage of the requests served within a certain time (ms)
  50%    290
  66%    334
  75%    381
  80%    442
  90%    577
  95%    742
  98%    935
  99%   1152
 100%   2201 (longest request)

Я не ожидал, что уровень параллелизма резко увеличит время, затрачиваемое на обработку запросов. Может я как-то неправильно истолковываю эти результаты?

Другая (связанная) проблема, которую следует отметить, заключается в том, что попадания в кеш CDN отображаются как 0 в пользовательском интерфейсе Google LB.


person dendog    schedule 04.01.2020    source источник


Ответы (1)


Похоже, ваши файлы не кэшируются. Cloud CDN кэширует только ответы, удовлетворяющие критериям, перечисленным на странице cloud.google.com/cdn/docs / caching # cacheability. Вы можете выполнить действия по устранению неполадок на странице cloud.google.com/cdn/docs / Troubleshooting # response-not-cached, чтобы определить конкретную проблему. Если это не поможет, я с радостью посмотрю, поделитесь ли вы конкретным URL-адресом.

Как вы, вероятно, знаете, ab не самый реалистичный способ оценки производительности CDN, и вы столкнетесь с узкими местами на своей локальной машине задолго до того, как столкнетесь с какими-либо узкими местами в самой Cloud CDN. Если вы все же используете ab, не забудьте указать параметр -k. Если вы этого не сделаете, у вас могут закончиться эфемерные порты.

person elving    schedule 05.01.2020
comment
Извините за двойной комментарий, но мне удалось обновить метаданные объекта cache-control: public, max-age=2592000, теперь все должно быть хорошо? - person dendog; 05.01.2020
comment
Я вижу, что упомянутый вами URL теперь возвращает заголовок Cache-Control: public,max-age=3600 и, когда я повторно запрашиваю файл, заголовок Age, который указывает, что ответ был доставлен из кеша. Надеюсь, новый заголовок Cache-Control привел к повышению производительности. - person elving; 05.01.2020
comment
Спасибо @elving. Я отмечу ваш ответ как принятый, но знаете ли вы, как лучше проверить производительность CDN? - person dendog; 07.01.2020
comment
Вы можете протестировать его без и с включенным Cloud CDN. Это позволит вам сравнить результаты. На рынке доступно множество различных инструментов для выполнения такого теста, и вы можете следовать примеру, описанному здесь: geekflare.com/google-cloud-cdn-test - person TheRovinRogue; 10.01.2020