Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4128764
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: 服务器与存储

2013-09-28 22:43:51

Nginx高并发负载的优化(1)

原文见:http://blog.martinfjordvald.com/2011/04/optimizing-nginx-for-high-traffic-loads/

之前我谈过如何优化Nginx并使之高性能,我要说明,那些从Apache迁移到Nginx的用户,你们最终会发现,Apache的调整配置和优化技巧对于Nginx来说并不适用。

我要说明,你不能像优化Apache那样去优化Nginx。Nginx没有像负载减半或让PHP运行加倍的选项。好消息是,Nginx本身已经优化的很好了。当决定使用Nginx,且使用apt-get安装它时,你得到的就是优化后的版本。(注意,Nginx的库更新比较频繁,WIKI页面上通常有最新的库)

也即,Nginx有很多影响其行为的选项,所有这些选项的默认值并不都是针对高并发场景进行优化的。我们还需要考虑Nginx运行的平台,针对OS的限制进行优化。

总得来说,我们不能优化单个链接的载入时间,我们能确保Nginx有理想的优化环境用于处理高负载情况。当然,所指的高并发指的是每秒数百个请求。

首先,我们要清楚Nginx可以用于大多数平台如Linux、MacOS、FreeBSD、Solaris和Windows。大多数操作系统内部实现了高性能的基于事件的Polling方法,遗憾的是,Nginx只支持上面平台中的四个。我个人倾向于FreeBSD。

要说明Nginx并不适合Windows系统,在Windows服务器上没有理由要使用Nginx。因为Windows有不同的事件Polling处理机制,Nginx的作者决定不支持Windows。

Nginx的第二大限制:也是与OS相关。打开Shell环境,用su命令切换到Nginx的运行用户,再运行命令“ulimit -a”,有一些值会限制Nginx不能超载。很多系统默认的打开文件数是有限制的,有些系统的限制是1024.如果Nginx运行在这样的系统上,那么就会受到限制,日志记录中可能会出现(错误24:Too many open file打开了太多的文件),并返回一个错误给客户端。
Nginx本质上处理的文件数是可以超过1024个的,你需要修改相应的设置。

有两种实现方法:一是用ulimit设置限制;二是使用worker_rlimit_nofile定义期望打开的文件描述符限制。

阅读(2639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~