AWS VPC S3-EndPoint vs. NAT-Instanz Performance

In einem VPC hat man die Möglichkeit private Subnetze einzurichten. EC2-Instanzen in den privaten Subnetzen können nur mit dem Internet kommunizieren (S3 ist aus Sicht des VPC Internet), wenn man eine sogenannte NAT-Instanz in einem Public-Subnet hat, die den Traffic entsprechend aus den privaten Subnetzen entgegen nimmt und in das Internet weiter routet.

Das Problem der NAT-Instanz ist allerdings, das man i.d.R. einen Single-Point of Failure hat und zum anderen die NAT-Instanz auch eine Perfomance-Bremse sein kann.

Seit kurzem bietet nun AWS im VPC neue Endpoints an, die es EC2-Instanzen in einem privaten Subnetz ermöglichen, direkt mit S3 in der Region zu sprechen.

Hier mal ein kurzer Performance-Test, bei dem wir eine Kommunikation mit S3 über NAT vs. des neuen Endpoints getestet haben:

Instanztyp für NAT und WebServer: t2.Micro (Network Low/moderate)

Über NAT Instance
Before | After fine Tuning
Über S3 Endpoint
Before | After fine Tuning
Upload Time (1) & CPU 41 sec (24MB/sec) | 20 sec (51MB/sec) 20 sec (51MB/sec) | 17 sec (60MB/sec)
Upload Time (2) & CPU 43 sec (23MB/sec) | 19 sec (53MB/sec) 19 sec (53MB/sec) | 17 sec (60MB/sec)
Upload Time (3) & CPU 40 sec (25MB/sec) | 20 sec (51MB/sec) 18 sec (56MB/sec) | 17 sec (60MB/sec)

 

Instanztyp für NAT und WebServer: m4.xlarge (Network high)

Über NAT Instance
Before | After fine Tuning
Über S3 Endpoint
Before | After fine Tuning
Upload Time (1) & CPU 17 sec (60MB/sec) | 17 sec (60MB/sec) 16 sec (64MB/sec) | 16 sec (64MB/sec)
Upload Time (2) & CPU 17 sec (60MB/sec) | 17 sec (60MB/sec) 16 sec (64MB/sec) | 16 sec (64MB/sec)
Upload Time (3) & CPU 17 sec (60MB/sec) | 17 sec (60MB/sec) 17 sec (60MB/sec) | 16 sec (64MB/sec)

Der Test wurde mit der AWS CLI durchgeführt. Für das Finetuning haben wir folgende Parameter bei der CLI eingestellt:

Folgenden Commands auf dem WebServer gelaufen und danach die Tests noch mal gemessen:

  • $ aws configure set default.s3.max_concurrent_requests 20 (Default is 10)
  • $ aws configure set default.s3.max_queue_size 10000 (Default is 1000)
  • $ aws configure set default.s3.multipart_threshold 64MB (Default is 8)
  • $ aws configure set default.s3.multipart_chunksize 16MB (Default is 8)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.