Серия Nginx: использование Nginx для ограничения тока | вызовы августа

задняя часть Nginx
Серия Nginx: использование Nginx для ограничения тока | вызовы августа

Это 28-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

📖Предисловие

心态好了,就没那么累了。心情好了,所见皆是明媚风景。

“一时解决不了的问题,那就利用这个契机,看清自己的局限性,对自己进行一场拨乱反正。”正如老话所说,一念放下,万般自在。如果你正被烦心事扰乱心神,不妨学会断舍离。断掉胡思乱想,社区垃圾情绪,离开负面能量。心态好了,就没那么累了。心情好了,所见皆是明媚风景。


JmeterВход

Apache JmeterдаApacheОрганизация, созданная на основеJava的压力测试工具. Используемый для стресс-тестирования программного обеспечения, он был первоначально разработан для тестирования веб-приложений, но с тех пор расширился до других областей тестирования. Его можно использовать для проверки производительности статических и динамических ресурсов. Его также можно использовать для имитации больших нагрузок на серверы, сети или объекты для проверки их прочности или анализа общей производительности при различных типах нагрузок. Вы также можете использовать его для графического анализа производительности или нагрузочного тестирования ваших серверов/скриптов/объектов в условиях интенсивного параллелизма.

(Примечание:jmeterURL-адрес загрузки:J-метр.Apache.org/download_Jumei…)

После завершения сначала переключитесь на среду упрощенного китайского языка, с которой мы знакомы:

1. 首先打开 jmeter 软件,发现显示的为英文
2. 首先可以通过 `jmeter` 的界面工具来设置语言为中文 点击菜单栏【Options】按钮
3. 然后依次单击【Choose language】>【Chinese(simplified)】...
4. 设置完成查看效果
5. 也可以通过设置jmeter.properties配置文件来设置语言为中文

Ссылка на использование jmeter выглядит следующим образом:

  1. Запустите Jmeter:
    • Установить среду JDK
    • Откройте папку и запустите jmeter.bat в каталоге bin, чтобы войти в основной интерфейс jmeter.Если основной интерфейс не может быть запущен, попробуйте напрямую запустить ApacheJMeter.jar в каталоге bin.
  2. Создать группу потоков
    • Щелкните план тестирования, щелкните правой кнопкой мыши, чтобы добавить потоки, и выберите группу потоков.
  3. Установить параметры группы потоков
    • Количество потоков: количество пользователей, 100 потоков имитируют доступ 100 пользователей.
    • Период нарастания (в секундах): каждый пользователь потока выполняет интервал, 0 представляет одновременный доступ
    • Количество циклов: количество раз, которое каждый пользователь запрашивает, это всегда непрерывный запрос.
  4. Создать HTTP-запрос
    • Щелкните правой кнопкой мыши группу потоков-Sampler-HTTP-запрос.
  5. Настройка HTTP-запросов
    • IP-адрес сервера
    • Номер порта
    • Путь указывается после номера порта, например /xxx.html.
  6. Добавить прослушиватель анализа результатов работы
    • Щелкните правой кнопкой мыши группу потоков — добавить — прослушиватель —
    • Графические результаты, агрегированные отчеты, просмотр дерева результатов

Схема эффекта выглядит следующим образом

Создана группа потоков стресс-тестов 在这里插入图片描述 HTTP-запрос 在这里插入图片描述 Агрегированные отчеты 在这里插入图片描述

Ограничить доступ к определенному IP

nginxОграничьте каждый IP до 1 доступа в секунду, выберитеnginx.confконфигурационный файл для настройки

在这里插入图片描述

найди это по http

http {
    # 限制时间段请求次数,开辟了一块allips内存来统计每秒ip访问次数 
	limit_req_zone $binary_remote_addr zone=allips:10m rate=1r/s;#1r/s表示每秒访问1次 
	#限制每ip每秒不超过20个请求,漏桶数burst为5 #brust的意思就是,如果第1秒、2,3,4秒请求为19个, 
	#第5秒的请求为25个是被允许的。 
	#但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。 
	#nodelay,如果不设置该选项,严格使用平均速率限制请求数, 
	#第1秒25个请求时,5个请求放到第2秒执行, 
	#设置nodelay,25个请求将在第1秒执行。

    server {
        listen       8086;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

		# 超过超时时间则进行故障转移
        location /chenOne {
			#每秒每IP限制访问1次,缓存值为5
			limit_req zone=allips burst=5 nodelay;
			# 放置静态资源的地方
            root   static;# (d:/nginx/static)
			# 访问的首页
            index  index.html index.htm;
			# 进行负载均衡的配置指向地址
			proxy_pass http://tomcate_server;
			proxy_connect_timeout 3;#默认单位是秒 
			proxy_read_timeout 3; 
			proxy_send_timeout 3;
        }

执行测试用例,看到结果是:每秒放行的请求次数不超过允许和缓冲次数之和。

Что касается результата, вам придется протестировать собственный интерфейс самостоятельно.


Ограничить мгновенный параллелизм определенного IP

Nginxограничить одинIpМгновенный параллелизм1,выберитеnginx.confконфигурационный файл для настройки

http{
    # 限制并发量,开辟出一块addr内存来统计IP并发量 
	limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    # 找到location加入如下代码
    # 连接数限制
	limit_conn addr 1;

Что касается результата, вам придется протестировать собственный интерфейс самостоятельно.


🎉Резюме:

  • Дополнительные справочные сообщения в блоге см. здесь:"Блог Чен Юнцзя"

  • Друзья, которым нравятся блогеры, могут подписаться, поставить лайк и продолжать обновлять, хе-хе!