Как добиться S3 рекламируемого 5500 HEAD rps? - PullRequest
1 голос
/ 13 марта 2020

Ссылка на объявленную s3 частоту запросов (5500 rps на префикс): https://aws.amazon.com/about-aws/whats-new/2018/07/amazon-s3-announces-increased-request-rate-performance/

Мой код:

package main

import (
    "log"
    "math/rand"
    "net/http"
    "strconv"
    "time"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/s3"
)

func main() {
    sess := session.Must(session.NewSession(&aws.Config{
        Region: aws.String("us-east-1"),
    }))
    client := s3.New(sess)
    for i := 0; i < 1000; i++ {
        go func() {
            r := rand.Intn(35000)
            start := time.Now()
            req, _ := client.HeadObjectRequest(&s3.HeadObjectInput{
                Key:    aws.String("one-prefix/" + strconv.Itoa(r)),
                Bucket: aws.String("MY-BUCKET"),
            })
            req.Sign()
            if _, err := http.DefaultClient.Do(req.HTTPRequest); err != nil {
                log.Println(err)
            }
            log.Println(r, "cost", time.Since(start))
        }()
    }
    <-time.After(10 * time.Second)
}

Требуется ~ 5с до конца sh эти goroutines все вместе на m5.large, так что примерно 200 оборотов в секунду, что является лишь частью рекламируемых 5500 оборотов в секунду. Интересно, что я делаю не так и как вывести лучше rps с s3?

1 Ответ

1 голос
/ 13 марта 2020

Исключите настройку сеанса из вашего времени и, что более важно, используйте тип экземпляра с сетью 100 Гб (или более ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...