在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
nginx做为HTTP服务器,有以下几项基本特性: 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲. 无缓存的反向代理加速,简单的负载均衡和容错. FastCGI,简单的负载均衡和容错. 模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。 Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核ePoll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。 Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。 然而,如果nginx被攻击或者访问量突然变大,nginx同样会因为负载变高或者内存不够用导致服务器宕机,最终导致站点无法访问。今天要谈到的解决方法来自淘宝开发的模块nginx-http-sysguard,主要用于当负载和内存达到一定的阀值之时,会执行相应的动作,比如直接返回503,504或者其他的.一直等到内存或者负载回到阀值的范围内,站点恢复可用。简单的说,这几个模块是让nginx有个缓冲时间,缓缓. # wget http://nginx.org/download/nginx-1.4.2.tar.gz # wget https://github.com/alibaba/nginx-http-sysguard/archive/master.zip \ -O nginx-http-sysguard-master.zip # unzip nginx-http-sysguard-master.zip # tar -xzvf nginx-1.4.2.tar.gz 1.2 打sysgrard补丁 # cd nginx-1.4.2 # patch -p1 < ../nginx-http-sysguard-master/nginx_sysguard_1.3.9.patch 1.3 安装nginx # ./configure --prefix=/usr/local/nginx-1.4.2 \ --with-http_stub_status_module --add-module=../nginx-http-sysguard # make # make install 2. sysguard指令 sysguard_load load=number [action=/url] 默认值: none sysguard_mem swapratio=ratio% [action=/url] 默认值: none sysguard_interval time 默认值: sysguard_interval 1s sysguard_log_level info | notice | warn | error 默认值: sysguard_log_level error server { listen 80; server_name www.ogeek.net www.heytool.com; access_log /data/logs/nginx/www.ogeek.net.access.log main; index index.html index.php index.html; root /data/site/www.ogeek.net; sysguard on; # 为了方便测试,load阀值为0.01,平时大家一般都在5或10+ sysguard_load load=0.01 action=/loadlimit; sysguard_mem swapratio=20% action=/swaplimit; location / { } location /loadlimit { return 503; } location /swaplimit { return 503; } } 3.2 测试 # uptime 16:23:37 up 6 days, 8:04, 2 users, load average: 0.00, 0.01, 0.05 # curl -I www.ogeek.net HTTP/1.1 403 Forbidden Server: nginx Date: Thu, 03 Oct 2013 16:27:13 GMT Content-Type: text/html Content-Length: 162 Connection: keep-alive 因为站点下没有文件,所以返回了403,实际上没关系. # uptime 16:25:59 up 6 days, 8:06, 2 users, load average: 0.05, 0.04, 0.05 # curl -I www.ogeek.net HTTP/1.1 503 Service Temporarily Unavailable Server: nginx Date: Thu, 03 Oct 2013 16:26:19 GMT Content-Type: text/html Content-Length: 206 Connection: keep-alive swap超过阀值的功能我就不再测试了。大家回家可以自己动手测试一下. |
请发表评论