Warning: mkdir(): No space left on device in /var/www/hottg/post.php on line 59

Warning: file_put_contents(aCache/aDaily/2025-07-22/post/qaload/--): Failed to open stream: No such file or directory in /var/www/hottg/post.php on line 72
Оживлю немного канал заметкой о том @📢 Load & Performance
TG Telegram Group & Channel
📢 Load & Performance | United States America (US)
Create: Update:

Оживлю немного канал заметкой о том, как можно сымитировать подачу нагрузки с разных IP-адресов для JMeter и не только. Тут речь про HTTP

Далее копия сообщения https://hottg.com/qa_load/96296/125780

А есть ли в системе балансировщик нагрузки или proxy, который и принимает подключения от клиентов? Nginx, haproxy, ...

Если балансировщик/прокси есть, то за ним один backend-сервер или несколько?

Если несколько серверов на стороне сервера приложений, то балансировщик как выполняет балансировку - по ip-address (реальному адресу или заголовку X-Forwarded-For и/или X-Real-IP), по sticky session (cookie), просто рандомом (round robin)

Если выполняет по ip-address (или по X-Forwarded-For заголовку от клиента с адресом), то есть ли ограничения на подключения от балансировщика до одного сервера приложений? Они меньше чем 5000 подключений?

Если ограничения меньше 5000 подключений, то будет возможность просто их увеличить, не навредив серверу?

Было 50 подключений к серверу, а все остальные ждали в очереди в течение 60 секунд, а теперь будет 5000.
Или увеличить таймаут, что может навредить самому тесту (тест будет не тестировать, а ждать)
Было 50 подключений к серверу, а все остальные ждали в очереди в течение 60 секунд, а теперь будут ждать 600 секунд.

Если простые правки настроек не подходят, то будет ли возможность добавить в конфигурацию балансировщика адреса нагрузочной станции (одной), как proxy-сервер верхнего уровня, чтобы эта нагрузочная станция (Apache.JMeter) сама присылала в заголовках запроса заголовки X-Forwarded-For и X-Real-IP с разными ip-адресами (один адрес на каждый сценарий, не на каждый отдельный запрос), а балансировщик доверял этим заголовкам?

Вот так выполняется настройка для nginx
http://nginx.org/en/docs/http/ngx_http_realip_module.html
https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/
в настройку
set_real_ip_from
сервера nginx добавляется ip-адрес нагрузочной станции с Apache.JMeter и nginx начинает думать, что Apache.JMeter это не клиент, а тоже балансировщик, вышестоящий балансировщик, через который приходят запросы реальных клиентов
set_real_ip_from 192.168.0.100;
set_real_ip_from 192.168.0.0/24;
set_real_ip_from ::1;
set_real_ip_from 127.0.0.1;



Для haProxy
https://www.haproxy.com/documentation/haproxy-configuration-tutorials/client-ip-preservation/add-x-forward-for-header/
option forwardfor


Также настройки для работы с внешними прокси есть и в самих серверах приложений. Но такие настройки нужны для других security-фильтров. Если бы такие настройки срабатывали, то был бы ответ не Connection Timeout, а HTTP Code 429. Добавлю их, так как немного связано с этой же темой

Для Python и Symfony
https://symfony.com/doc/2.2/components/http_foundation/trusting_proxies.html
Request::setTrustedProxies(array('192.168.0.100', '192.168.0.0/24', '::1', '127.0.0.1'));

В Scala/Java и Play Framework
https://www.playframework.com/documentation/2.7.x/HTTPServer
play.http.forwarded.trustedProxies=["192.168.0.100", "192.168.0.0/24", "::1", "127.0.0.1"]

В Java Spring Boot + Tomcat
https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/html/howto-security.html#howto-enable-https
https://tomcat.apache.org/tomcat-8.5-doc/api/org/apache/catalina/valves/RemoteIpValve.html
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
server.tomcat.internalProxies="192\.168\.0\.100"

By default, 10/8, 192.168/16, 169.254/16, 127/8, 100.64/10, 172.16/12, and ::1 are allowed.
У параметра internalProxies приоритет выше, чем у trustedProxies:
https://github.com/apache/tomcat/blob/10.0.x/java/org/apache/catalina/filters/RemoteIpFilter.java#L800-L832
Надо разбираться, как работает только internalProxies, без trustedProxies и их комбинация


А заголовки
X-Forwarded-For
X-Real-IP

можно добавить через HTTP Header Manager в JMeter
значения можно делать, например, такие
44.77.111.${__jexl3( ${__threadNum} % 200 )}

Оживлю немного канал заметкой о том, как можно сымитировать подачу нагрузки с разных IP-адресов для JMeter и не только. Тут речь про HTTP

Далее копия сообщения https://hottg.com/qa_load/96296/125780

А есть ли в системе балансировщик нагрузки или proxy, который и принимает подключения от клиентов? Nginx, haproxy, ...

Если балансировщик/прокси есть, то за ним один backend-сервер или несколько?

Если несколько серверов на стороне сервера приложений, то балансировщик как выполняет балансировку - по ip-address (реальному адресу или заголовку X-Forwarded-For и/или X-Real-IP), по sticky session (cookie), просто рандомом (round robin)

Если выполняет по ip-address (или по X-Forwarded-For заголовку от клиента с адресом), то есть ли ограничения на подключения от балансировщика до одного сервера приложений? Они меньше чем 5000 подключений?

Если ограничения меньше 5000 подключений, то будет возможность просто их увеличить, не навредив серверу?
Было 50 подключений к серверу, а все остальные ждали в очереди в течение 60 секунд, а теперь будет 5000.
Или увеличить таймаут, что может навредить самому тесту (тест будет не тестировать, а ждать)
Было 50 подключений к серверу, а все остальные ждали в очереди в течение 60 секунд, а теперь будут ждать 600 секунд.

Если простые правки настроек не подходят, то будет ли возможность добавить в конфигурацию балансировщика адреса нагрузочной станции (одной), как proxy-сервер верхнего уровня, чтобы эта нагрузочная станция (Apache.JMeter) сама присылала в заголовках запроса заголовки X-Forwarded-For и X-Real-IP с разными ip-адресами (один адрес на каждый сценарий, не на каждый отдельный запрос), а балансировщик доверял этим заголовкам?

Вот так выполняется настройка для nginx
http://nginx.org/en/docs/http/ngx_http_realip_module.html
https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/
в настройку
set_real_ip_from
сервера nginx добавляется ip-адрес нагрузочной станции с Apache.JMeter и nginx начинает думать, что Apache.JMeter это не клиент, а тоже балансировщик, вышестоящий балансировщик, через который приходят запросы реальных клиентов
set_real_ip_from 192.168.0.100;
set_real_ip_from 192.168.0.0/24;
set_real_ip_from ::1;
set_real_ip_from 127.0.0.1;



Для haProxy
https://www.haproxy.com/documentation/haproxy-configuration-tutorials/client-ip-preservation/add-x-forward-for-header/
option forwardfor


Также настройки для работы с внешними прокси есть и в самих серверах приложений. Но такие настройки нужны для других security-фильтров. Если бы такие настройки срабатывали, то был бы ответ не Connection Timeout, а HTTP Code 429. Добавлю их, так как немного связано с этой же темой

Для Python и Symfony
https://symfony.com/doc/2.2/components/http_foundation/trusting_proxies.html
Request::setTrustedProxies(array('192.168.0.100', '192.168.0.0/24', '::1', '127.0.0.1'));

В Scala/Java и Play Framework
https://www.playframework.com/documentation/2.7.x/HTTPServer
play.http.forwarded.trustedProxies=["192.168.0.100", "192.168.0.0/24", "::1", "127.0.0.1"]

В Java Spring Boot + Tomcat
https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/html/howto-security.html#howto-enable-https
https://tomcat.apache.org/tomcat-8.5-doc/api/org/apache/catalina/valves/RemoteIpValve.html
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
server.tomcat.internalProxies="192\.168\.0\.100"

By default, 10/8, 192.168/16, 169.254/16, 127/8, 100.64/10, 172.16/12, and ::1 are allowed.
У параметра internalProxies приоритет выше, чем у trustedProxies:
https://github.com/apache/tomcat/blob/10.0.x/java/org/apache/catalina/filters/RemoteIpFilter.java#L800-L832
Надо разбираться, как работает только internalProxies, без trustedProxies и их комбинация


А заголовки
X-Forwarded-For
X-Real-IP

можно добавить через HTTP Header Manager в JMeter
значения можно делать, например, такие
44.77.111.${__jexl3( ${__threadNum} % 200 )}
👍111


>>Click here to continue<<

📢 Load & Performance






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)


Warning: Undefined array key 3 in /var/www/hottg/function.php on line 115

Fatal error: Uncaught mysqli_sql_exception: Too many connections in /var/www/db.php:16 Stack trace: #0 /var/www/db.php(16): mysqli_connect() #1 /var/www/hottg/function.php(212): db() #2 /var/www/hottg/function.php(115): select() #3 /var/www/hottg/post.php(351): daCache() #4 /var/www/hottg/route.php(63): include_once('...') #5 {main} thrown in /var/www/db.php on line 16