Моя конфигурация Dropwizard выглядит следующим образом:
server:
applicationConnectors:
- type: http
port: 8080
adminConnectors:
- type: http
port: 8081
minThreads: 50
type: default
maxThreads: 1024
maxQueuedRequests: 1024
gzip:
enabled: true
minimumEntitySize: 128B
bufferSize: 8KB
deflateCompressionLevel: 9
includedMethods: [POST, GET]
Я написал простой код go для нагрузочного тестирования этой конечной точки, чтобы определить максимальное количество запросов в секунду, которое она может выдержать.
func init() {
// Customize the Transport to have larger connection pool
defaultRoundTripper := http.DefaultTransport
defaultTransportPointer, ok := defaultRoundTripper.(*http.Transport)
if !ok {
panic(fmt.Sprintf("defaultRoundTripper not an *http.Transport"))
}
defaultTransport := *defaultTransportPointer // dereference it to get a copy of the struct that the pointer points to
defaultTransport.MaxIdleConns = 500
defaultTransport.MaxIdleConnsPerHost = 450
myClient = &http.Client{Transport: &defaultTransport}
}
//HitHelloWorldService ...
func HitHelloWorldService() {
fmt.Println("Hitting the Hello World Service")
resp, err := myClient.Get(helloWorldEndpoint)
if err != nil {
fmt.Printf("Error while hitting endpoint : %v\n", err)
return
}
io.Copy(ioutil.Discard, resp.Body)
defer resp.Body.Close()
}
Я интегрировал prometheus с dropwizard и использовал графану для построения RPS. Чтобы быть уверенным в RPS.
Теперь проблема в том, что следующий код go вызывает указанную выше функцию.
func main() {
fmt.Println("Hello !! Starting with go-client to benchmark dropwizard endpoints")
var wg sync.WaitGroup
for i := 0; i < 400; i++ {
wg.Add(1)
go httpclients.HitHelloWorldService()
}
wg.Wait()
}
Я получаю следующую ошибку.
Get http://127.0.0.1:8080/helloWorld: read tcp 127.0.0.1:53576->127.0.0.1:8080: read: connection reset by peer
Максимальная пропускная способность, которую мне удалось достичь, составляет не более 300 запросов в секунду.
Примечание. Я запускаю этот код на локальной машине ma c. Конфигурация выглядит следующим образом:
Память: 16 ГБ, 1600 МГц Процессор DDR3: 2,2 ГГц Intel Core i7
Получить http://127.0.0.1: 8080 / helloWorld : читать tcp 127.0. 0.1: 53567-> 127.0.0.1:8080: чтение: сброс соединения одноранговым узлом
Как я могу добиться более высокого RPS на моей локальной машине ma c. Как я могу исправить проблему: сброс соединения одноранговым узлом .