mirror of
https://github.com/aykhans/dodo.git
synced 2025-04-20 11:11:26 +00:00
🔨 Set the MaxConns attribute on HostClients / fix #21
This commit is contained in:
parent
60335f7726
commit
e9731a70ac
@ -76,6 +76,13 @@ func (config *RequestConfig) GetValidDodosCountForProxies() int {
|
|||||||
return min(config.DodosCount, len(config.Proxies), MaxDodosCountForProxies)
|
return min(config.DodosCount, len(config.Proxies), MaxDodosCountForProxies)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (config *RequestConfig) GetMaxConns(minConns uint) uint {
|
||||||
|
maxConns := max(
|
||||||
|
minConns, uint(config.GetValidDodosCountForRequests()),
|
||||||
|
)
|
||||||
|
return ((maxConns * 50 / 100) + maxConns)
|
||||||
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Method string `json:"method" validate:"http_method"` // custom validations: http_method
|
Method string `json:"method" validate:"http_method"` // custom validations: http_method
|
||||||
URL string `json:"url" validate:"http_url,required"`
|
URL string `json:"url" validate:"http_url,required"`
|
||||||
|
@ -33,13 +33,15 @@ func getClientDoFunc(
|
|||||||
timeout time.Duration,
|
timeout time.Duration,
|
||||||
proxies []config.Proxy,
|
proxies []config.Proxy,
|
||||||
dodosCount int,
|
dodosCount int,
|
||||||
|
maxConns uint,
|
||||||
yes bool,
|
yes bool,
|
||||||
URL *url.URL,
|
URL *url.URL,
|
||||||
) ClientDoFunc {
|
) ClientDoFunc {
|
||||||
isTLS := URL.Scheme == "https"
|
isTLS := URL.Scheme == "https"
|
||||||
|
|
||||||
if len(proxies) > 0 {
|
if len(proxies) > 0 {
|
||||||
activeProxyClients := getActiveProxyClients(
|
activeProxyClients := getActiveProxyClients(
|
||||||
ctx, proxies, timeout, dodosCount, URL,
|
ctx, proxies, timeout, dodosCount, maxConns, URL,
|
||||||
)
|
)
|
||||||
if ctx.Err() != nil {
|
if ctx.Err() != nil {
|
||||||
return nil
|
return nil
|
||||||
@ -71,6 +73,7 @@ func getClientDoFunc(
|
|||||||
fmt.Println()
|
fmt.Println()
|
||||||
if activeProxyClientsCount == 0 {
|
if activeProxyClientsCount == 0 {
|
||||||
client := &fasthttp.HostClient{
|
client := &fasthttp.HostClient{
|
||||||
|
MaxConns: int(maxConns),
|
||||||
IsTLS: isTLS,
|
IsTLS: isTLS,
|
||||||
Addr: URL.Host,
|
Addr: URL.Host,
|
||||||
MaxIdleConnDuration: timeout,
|
MaxIdleConnDuration: timeout,
|
||||||
@ -91,6 +94,7 @@ func getClientDoFunc(
|
|||||||
}
|
}
|
||||||
|
|
||||||
client := &fasthttp.HostClient{
|
client := &fasthttp.HostClient{
|
||||||
|
MaxConns: int(maxConns),
|
||||||
IsTLS: isTLS,
|
IsTLS: isTLS,
|
||||||
Addr: URL.Host,
|
Addr: URL.Host,
|
||||||
MaxIdleConnDuration: timeout,
|
MaxIdleConnDuration: timeout,
|
||||||
@ -111,6 +115,7 @@ func getActiveProxyClients(
|
|||||||
proxies []config.Proxy,
|
proxies []config.Proxy,
|
||||||
timeout time.Duration,
|
timeout time.Duration,
|
||||||
dodosCount int,
|
dodosCount int,
|
||||||
|
maxConns uint,
|
||||||
URL *url.URL,
|
URL *url.URL,
|
||||||
) []*fasthttp.HostClient {
|
) []*fasthttp.HostClient {
|
||||||
activeProxyClientsArray := make([][]*fasthttp.HostClient, dodosCount)
|
activeProxyClientsArray := make([][]*fasthttp.HostClient, dodosCount)
|
||||||
@ -140,6 +145,7 @@ func getActiveProxyClients(
|
|||||||
timeout,
|
timeout,
|
||||||
&activeProxyClientsArray[i],
|
&activeProxyClientsArray[i],
|
||||||
increase,
|
increase,
|
||||||
|
maxConns,
|
||||||
URL,
|
URL,
|
||||||
&wg,
|
&wg,
|
||||||
)
|
)
|
||||||
@ -171,6 +177,7 @@ func findActiveProxyClients(
|
|||||||
timeout time.Duration,
|
timeout time.Duration,
|
||||||
activeProxyClients *[]*fasthttp.HostClient,
|
activeProxyClients *[]*fasthttp.HostClient,
|
||||||
increase chan<- int64,
|
increase chan<- int64,
|
||||||
|
maxConns uint,
|
||||||
URL *url.URL,
|
URL *url.URL,
|
||||||
wg *sync.WaitGroup,
|
wg *sync.WaitGroup,
|
||||||
) {
|
) {
|
||||||
@ -227,6 +234,7 @@ func findActiveProxyClients(
|
|||||||
*activeProxyClients = append(
|
*activeProxyClients = append(
|
||||||
*activeProxyClients,
|
*activeProxyClients,
|
||||||
&fasthttp.HostClient{
|
&fasthttp.HostClient{
|
||||||
|
MaxConns: int(maxConns),
|
||||||
IsTLS: isTLS,
|
IsTLS: isTLS,
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
Dial: dialFunc,
|
Dial: dialFunc,
|
||||||
|
@ -28,6 +28,7 @@ func Run(ctx context.Context, requestConfig *config.RequestConfig) (Responses, e
|
|||||||
requestConfig.Timeout,
|
requestConfig.Timeout,
|
||||||
requestConfig.Proxies,
|
requestConfig.Proxies,
|
||||||
requestConfig.GetValidDodosCountForProxies(),
|
requestConfig.GetValidDodosCountForProxies(),
|
||||||
|
requestConfig.GetMaxConns(fasthttp.DefaultMaxConnsPerHost),
|
||||||
requestConfig.Yes,
|
requestConfig.Yes,
|
||||||
requestConfig.URL,
|
requestConfig.URL,
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user