Ссылка на объявленную 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?