当前位置: 首页 > news >正文

Nginx服务器防止负载过高模块sysguard

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

如果nginx被攻击或者访问量突然变大,nginx会因为负载变高或者内存不够用导致服务器宕机,最终导致站点无法访问。今天要谈到的解决方法来自淘宝开发的模块nginx-http-sysguard,主要用于当负载和内存达到一定的阀值之时,会执行相应的动作,比如直接返回503,504或者其他的.一直等到内存或者负载回到阀值的范围内,站点恢复可用。简单的说,这几个模块是让nginx有个缓冲时间,缓缓。

一、安装

附件中下载nginx-1.4.1,把扩展名改为.tar.gz

1
2
tar  -zxvf nginx-1.4.1. tar .gz
wget https: //github .com /alibaba/nginx-http-sysguard/archive/master .zip -O nginx-http-sysguard-master.zip

下载模块,也可以到附件中下载。

1
2
3
unzip nginx-http-sysguard-master.zip
cd  nignx-1.4.1
patch -p1 < .. /nginx-http-sysguard-master/nginx_sysguard_1 .3.9.patch

如果之前安装过nginx,可以nginx -V查看安装命令,然后再次安装并增加--add-module=../nginx-http-sysguard模块

1
make  &&  make  install

二、解释

sysguard指令

语法: sysguard [on |off]

默认值: sysguard off

配置段: http, server,location

开关模块


语法: sysguard_loadload=number [action=/url]

默认值: none

配置段: http, server,location

指定负载阀值,当系统的负载超过这个值,所有的请求都会被重定向到action定义的uri请求中.如果没有定义URL action没有定义,那么服务器直接返回503


语法: sysguard_memswapratio=ratio% [action=/url]

默认值: none

配置段: http, server,location

定义交换分区使用的阀值,如果交换分区使用超过这个阀值,那么后续的请求全部被重定向到action定义的uri请求中.如果没有定义URL action没有定义,那么服务器直接返回503


语法: sysguard_intervaltime

默认值: sysguard_interval1s

配置段: http, server,location

定义系统信息更新的频率,默认1秒.


语法:sysguard_log_level info | notice | warn | error

默认值:sysguard_log_level error

配置段: http, server,location

定义sysguard的日志级别


三、配置

server段增加:

1
2
3
4
5
6
7
8
9
10
11
sysguard on;
# 为了方便测试,load阀值为0.01(表示的是load average: 最左边的值),平时正常都在cpu核数左右。
sysguard_loadload=0.01 action= /loadlimit ;
sysguard_memswapratio=20% action= /swaplimit ;
location  /loadlimit  {
return  404;
#这里便于测试定义404错误;
}
location  /swaplimit  {
return  503;
}

四、测试

通过webbench让本机负载增高,打开页面会发现出现404错误。

五、总结

在nginx是realserver的情况下,个人也比较推荐使用这种方法,如果服务器负载一旦爬高,一般要比较长的时间才能恢复到正常水平,在采用这个插件的情况下,负载达到阀值,nginx返回503,前段使用故障转移将请求发往其他服务器,这台服务器在无访问的情况下,便能很快的恢复到正常水平,并且能够立即投入工作。超过阀值的服务器处理请求速度也会大打折扣,使用这个模块,巧妙的将请求发送到了更快速的服务器上,在一定程度上避免了访问速度慢的问题. 前面说的是在集群环境下,在单点环境下,用不用大家斟酌一下。

如果想深入体验LINUX系统的新手,也可以先下载一个方德Linux软件中心试用一下。

免费下载地址:http://www.nfs-cloud.cn:81/appCenter/open/softcenter

转载于:https://my.oschina.net/foundation00523wuxi/blog/650583

相关文章:

  • 矩阵的存储及快速转置
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]
  • USB2.0学习笔记连载(九):USB设备驱动的安装
  • PHP语言 -- 面向对象
  • spring 中IOC和aop的理解
  • keepalived which time exec track script , notify script when vrrp transition
  • 代理模式
  • java aopalliance-1.0.jar这个包是做什么用的?
  • Android客户端采用Http 协议Post方式请求与服务端进行数据交互(转)
  • Distributed3:SQL Server 创建分布式数据库
  • C#-属性
  • 2的幂的合并运算实例
  • 【curl】cookie的分隔符
  • 从零开始学数据库(一)——安装、启动、进入、创建表、检查表结构、类型说明、更改表项名、插入值...
  • Ruby之基本数据类型(三)
  • 时间复杂度分析经典问题——最大子序列和
  • canvas绘制圆角头像
  • Docker下部署自己的LNMP工作环境
  • ES6简单总结(搭配简单的讲解和小案例)
  • Java 多线程编程之:notify 和 wait 用法
  • Material Design
  • mysql常用命令汇总
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • October CMS - 快速入门 9 Images And Galleries
  • SwizzleMethod 黑魔法
  • vue--为什么data属性必须是一个函数
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 机器学习 vs. 深度学习
  • 简析gRPC client 连接管理
  • 驱动程序原理
  • 人脸识别最新开发经验demo
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何利用MongoDB打造TOP榜小程序
  • 推荐一个React的管理后台框架
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #14vue3生成表单并跳转到外部地址的方式
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (33)STM32——485实验笔记
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (转)负载均衡,回话保持,cookie
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • [ C++ ] STL---stack与queue
  • [ 转载 ] SharePoint 资料
  • []我的函数库
  • [17]JAVAEE-HTTP协议
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [BZOJ2850]巧克力王国
  • [IMX6DL] CPU频率调节模式以及降频方法
  • [LeetCode] 19. 删除链表的倒数第 N 个结点