Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169168
  • 博文数量: 114
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1116
  • 用 户 组: 普通用户
  • 注册时间: 2015-11-09 09:49
文章分类

全部博文(114)

文章存档

2016年(74)

2015年(40)

我的朋友

分类: LINUX

2016-03-31 13:40:34

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

一、安装

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


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  

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



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段增加:










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软件中心试用一下。

免费下载地址:
阅读(1008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~