博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx服务器防止负载过高模块sysguard
阅读量:6325 次
发布时间:2019-06-22

本文共 2360 字,大约阅读时间需要 7 分钟。

hot3.png

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用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;
}

四、测试

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

五、总结

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

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

免费下载地址:

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

你可能感兴趣的文章
strtok、strtok_s、strtok_r 字符串切割函数
查看>>
shell编程基础(5)---循环指令
查看>>
八皇后问题
查看>>
.NET破解之爱奇迪(二)
查看>>
C#反射方法学习
查看>>
MD5加密解密
查看>>
.Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
查看>>
SVN被锁定的几种解决方法
查看>>
js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
查看>>
ios ios7 取消控制拉升
查看>>
182在屏幕中实现网格化视图效果
查看>>
本文摘录 - FlumeJava
查看>>
Scala学习(三)----数组相关操作
查看>>
Matlab基于学习------------------函数微分学
查看>>
UVa 11790 - Murcia&#39;s Skyline
查看>>
启动时创建线程并传递数据
查看>>
汉字正字表达式解决方案
查看>>
lemon OA 下阶段工作安排
查看>>
WCF X.509验证
查看>>
Fatal error: Class 'GearmanClient' not found解决方法
查看>>