🔨 Set the MaxConns attribute on HostClients / fix #21

This commit is contained in:
Aykhan Shahsuvarov 2024-09-10 18:12:53 +04:00
parent 60335f7726
commit e9731a70ac
3 changed files with 17 additions and 1 deletions

View File

@ -76,6 +76,13 @@ func (config *RequestConfig) GetValidDodosCountForProxies() int {
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 {
Method string `json:"method" validate:"http_method"` // custom validations: http_method
URL string `json:"url" validate:"http_url,required"`

View File

@ -33,13 +33,15 @@ func getClientDoFunc(
timeout time.Duration,
proxies []config.Proxy,
dodosCount int,
maxConns uint,
yes bool,
URL *url.URL,
) ClientDoFunc {
isTLS := URL.Scheme == "https"
if len(proxies) > 0 {
activeProxyClients := getActiveProxyClients(
ctx, proxies, timeout, dodosCount, URL,
ctx, proxies, timeout, dodosCount, maxConns, URL,
)
if ctx.Err() != nil {
return nil
@ -71,6 +73,7 @@ func getClientDoFunc(
fmt.Println()
if activeProxyClientsCount == 0 {
client := &fasthttp.HostClient{
MaxConns: int(maxConns),
IsTLS: isTLS,
Addr: URL.Host,
MaxIdleConnDuration: timeout,
@ -91,6 +94,7 @@ func getClientDoFunc(
}
client := &fasthttp.HostClient{
MaxConns: int(maxConns),
IsTLS: isTLS,
Addr: URL.Host,
MaxIdleConnDuration: timeout,
@ -111,6 +115,7 @@ func getActiveProxyClients(
proxies []config.Proxy,
timeout time.Duration,
dodosCount int,
maxConns uint,
URL *url.URL,
) []*fasthttp.HostClient {
activeProxyClientsArray := make([][]*fasthttp.HostClient, dodosCount)
@ -140,6 +145,7 @@ func getActiveProxyClients(
timeout,
&activeProxyClientsArray[i],
increase,
maxConns,
URL,
&wg,
)
@ -171,6 +177,7 @@ func findActiveProxyClients(
timeout time.Duration,
activeProxyClients *[]*fasthttp.HostClient,
increase chan<- int64,
maxConns uint,
URL *url.URL,
wg *sync.WaitGroup,
) {
@ -227,6 +234,7 @@ func findActiveProxyClients(
*activeProxyClients = append(
*activeProxyClients,
&fasthttp.HostClient{
MaxConns: int(maxConns),
IsTLS: isTLS,
Addr: addr,
Dial: dialFunc,

View File

@ -28,6 +28,7 @@ func Run(ctx context.Context, requestConfig *config.RequestConfig) (Responses, e
requestConfig.Timeout,
requestConfig.Proxies,
requestConfig.GetValidDodosCountForProxies(),
requestConfig.GetMaxConns(fasthttp.DefaultMaxConnsPerHost),
requestConfig.Yes,
requestConfig.URL,
)