免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234567
最近访问板块 发新帖
楼主: crazyhadoop
打印 上一主题 下一主题

[Linux] 强大的Nginx你究竟会用多少? [复制链接]

论坛徽章:
0
61 [报告]
发表于 2016-05-04 11:48 |只看该作者
如何在实战中熟练使用Nginx?
1、首先了解Nginx的基本架构、原理
2、了解Nginx最擅长的功能和特点(主要他的优点):常用功能有反向代理、负载均衡、目录保护、IP访问限制、防盗链、下载限速等
特点有:热部署、高并发、响应快、内存消耗低、易配置、BUG少;
3、想熟练就要折腾,不怕客户需求刁钻,有需求、要求,才有动力去发掘、调整、提高
如何发挥Nginx的性能?
1、想在生产中不出问题或少出问题,测试工作是不可避免的,利用压力测试工具和监控程序分析、调优性能,本人都是用免费的工具(webbench、tsar等),LoadRunner相对于tsar庞大很多,不过图形化支持的很好;
2、对操作系统必须有一定了解,Nginx很多参数也受制于系统参数的限制,无法发挥最大性能;
总之要充分发挥Nginx的性能,不止是单纯调整Nginx的几个参数就可以的,需要知识面广
  如何在理解Nginx源码的基础上,通过编写Nginx插件来提高自己的编程能力?
这个,我暂时还没有接触过
以上纯属个人观点。

论坛徽章:
12
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-10 18:29:00狮子座
日期:2016-01-17 15:40:28处女座
日期:2016-01-16 17:36:17巨蟹座
日期:2016-01-16 17:35:48未羊
日期:2015-12-12 16:18:26青铜圣斗士
日期:2015-12-09 01:07:50IT运维版块每日发帖之星
日期:2015-12-05 06:20:00神斗士
日期:2015-12-03 23:13:59IT运维版块每日发帖之星
日期:2015-11-22 06:20:00IT运维版块每日发帖之星
日期:2015-11-08 06:20:00IT运维版块每日发帖之星
日期:2015-10-29 06:20:00IT运维版块每日发帖之星
日期:2016-06-30 06:20:00
62 [报告]
发表于 2016-05-05 10:05 |只看该作者
也来参加下活动,

  1】如何在实战中熟练使用Nginx?
      工作业务的关系,只用到Nginx的反向代理以及负载均衡等特性,比较典型的是邮件代理和web服务的反向代理,偶尔也做过一些轻量级的web部署在nginx上,所以自己也是靠看官方文档以及相关的书籍来慢慢熟悉的,但是nginx有很多强大的功能,自己也没有用到,因为业务要哪块的东西,真正做的才是哪方面的东西,这样会学习的比较透彻,主要还是贴合业务,像优化等自己也只是在书中看到过,并未涉及,这阵子有时间会看一些nginx内部的源码,整个代码分布对从软件设计的角度看很好的参考和学习材料,结构的安排以及功能模块的划分很合理。目前还在慢慢深入研究
  2】如何发挥Nginx的性能?
      要最求极致的性能,一种是作为代理和轻量级web服务器在架构上做好规划,使用LNMP 或LNAMP等架构方案,从架构方案上保障系统的健壮性;而是需要在集群部署的基础上,做Nginx的调优,包括linux内核以及Nginx的配置文件参数的调整,需要深入了解Nginx各参数,这些自己也仅仅是写了解,工作当中并未深入涉及
  3】如何在理解Nginx源码的基础上,通过编写Nginx插件来提高自己的编程能力?
      目前也正在看源码,主要是其功能模块的划分以及数据结构的设计,学习下软件设计的方法,借鉴下思路,并未涉及对Nginx插件的编写,后面源代码理解后可尝试下,这道题也给了自己想法,谢谢。

论坛徽章:
0
63 [报告]
发表于 2016-05-08 20:50 |只看该作者
单位的主要web用的就是NGINX反向代理,共5台,采取的是负载均衡。个人的使用体验如下:1.对静态页面缓存功能与请求的处理能力算是顶级的了。2.故障率极低,而且加上shell脚本,可以达到故障的自我修复效果。第3点是我觉得最有价值的地方了。3.抗CC攻击的效果非常好,对于没有cdn,没上云服务的公司,NGINX可谓首选。一点点个人见解!

论坛徽章:
0
64 [报告]
发表于 2016-05-09 11:43 |只看该作者
学习一下 先

论坛徽章:
0
65 [报告]
发表于 2016-05-09 14:04 |只看该作者
抱着学习的态度来的

论坛徽章:
19
处女座
日期:2014-07-18 14:50:5415-16赛季CBA联赛之北京
日期:2019-09-16 15:39:1415-16赛季CBA联赛之上海
日期:2019-09-15 15:29:0415-16赛季CBA联赛之山西
日期:2017-03-09 10:58:232017金鸡报晓
日期:2017-02-08 10:33:212017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之深圳
日期:2016-12-15 17:55:53C
日期:2016-10-25 16:00:1515-16赛季CBA联赛之新疆
日期:2016-07-21 14:02:0415-16赛季CBA联赛之江苏
日期:2016-06-30 12:15:04shanzhi
日期:2016-06-17 17:59:31平安夜徽章
日期:2015-12-26 00:06:30
66 [报告]
发表于 2016-05-10 21:25 |只看该作者
本帖最后由 shenlanyouyu 于 2016-05-10 21:36 编辑

1. 如何在实战中熟练使用Nginx?
     Nginx是一个安全、快速并且灵活的开源Web服务器,占用系统资源少,并发能力强,稳定较高。现在公司的业务是构建在LNMP架构上的,后台开发人员为了加快环境搭建,使用了LNMP一键安装包。因为Nginx编译安装需要输入大量的命令,如果是配置生产环境需要耗费大量的时间。
     在实战中熟练使用Nginx,需要熟悉Nginx的配置文件,熟练掌握配置的通用语法。多练习搭建负载均衡、反向代理,熟能生巧。其次,遇到问题可以通过网络来获取帮助。
     同时可以加入邮件讨论组:http://mailman.nginx.org/mailman/listinfo
     学习官方的使用手册: http://mailman.nginx.org/mailman/listinfo
    配合一些工具,例如wireshark抓取网络packet来分析;使用gdb attach到Nginx进程来调试分析;使用日志信息来跟踪Nginx的运行等等,掌握Nginx的运行的流程。

2. 如何发挥Nginx的性能?
一、Nginx的进程的模型,是主-从结构,一个master进程,多个worker进程。worker进程通常为CPU的数量。进程职责如下:
     (1) master进程是监控进程,充当进程组和用户交互的接口,同时监控worker进程,如果worker进程意外退出,master重新fork一个worker进程。
     (2) worker进程完成具体的业务逻辑,等待客户端建立连接,接收客户端的连接请求等等。
     前面有网友说worker进程的数量,配置为CPU数量*2。我觉得这样不能提高效率,正确的做法是:
     (1) worker进程数=CPU数,进程间切换的代价是最小的。
     (2) 其次设置worker进程的CPU亲和性,将worker进程绑定到特定的CPU上面,避免进程在CPU间调度带来的开销
     采用上面两个设定可以最大程度地降低进程切换带来的效率损失和提高CPU的利用率。在一个四核CPU上,worker进程的数量如下:
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ sudo /etc/init.d/apache2 stop
     * Stopping web server apache2                                                                             *
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ sudo /etc/init.d/nginx start
     openstack@openstack-VirtualBox:/mnt/share/nginx/nginx-1.6.3$ ps -aux |grep nginx
     root     15816  0.0  0.3  85892  2820 ?        Ss   21:10   0:00 nginx: master process /usr/sbin/nginx
     www-data 15817  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15818  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15819  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     www-data 15820  0.0  0.3  86232  3412 ?        S    21:10   0:00 nginx: worker process
     opensta+ 15822  0.0  0.2  15944  2392 pts/24   S+   21:10   0:00 grep --color=auto nginx

二、Nginx是事件驱动的Web服务器,支持select/poll/epoll等I/O多路复用函数的实现。使用epoll不会设置文件描述符的增加而导致效率的下降。因为select和poll采用遍历扫描来判断描述符是否有事件发生。监控的文件描述符增加,系统效率就会急剧下降。因此配置使用epoll会提高系统的性能。

3. 如何在理解Nginx源码的基础上,通过编写Nginx插件来提高自己的编程能力?
     研究过一部分Nginx的源代码,全部用C语言写的,代码质量非常高。编写Nginx插件,当然需要掌握C语言,C++语言也是可以开发Nginx的,据我所知lua也可以编写Nginx插件。
理解Nginx源码最好的方法就是先用,在使用过程中加深理解。其次选一本好的参考书,辅助学习,好的书籍能够够指导我们学习,达到事半功倍的效果。
     (1) 首先下载一份Nginx的源码,搭建编译环境,编译安装。这种方式难度会大一些,需要在源代码目录执行./configure,然后make & make install,其次,要处理很多编译依赖库安装的问题,例如pcre。例如下图:
     checking for getaddrinfo() ... found
     checking for PCRE library ... not found
     checking for PCRE library in /usr/local/ ... not found
     checking for PCRE library in /usr/include/pcre/ ... not found
     checking for PCRE library in /usr/pkg/ ... not found
     checking for PCRE library in /opt/local/ ... not found

    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.

     也可以采用$sudo apt-get install nginx方式来安装。
     (2) 使用Nginx,配置Nginx,熟悉并逐渐掌握Nginx的配置和使用,主要理解Nginx的配置语法。
     Nginx搭建一个反向代理服务器,将用户的请求分发到不同的后端服务器来处理,由这些服务器完成具体的业务逻辑,通过分布式计算能够大大减少业务处理时间。
     (3) 配合一些工具,例如wireshark抓取网络packet来分析;使用gdb attach到Nginx进程来调试分析;使用日志信息来跟踪Nginx的运行等等。
     (4) 在使用过程中,理解,通过工具来了解Nginx的运行流程。结合源代码学习,掌握Nginx的模块机制。
     (5) 编写负载均衡策略,Nginx中提供了加权轮询、IP哈希等策略,通过参考他们的实现,编写适合自身业务需求的负载均衡策略,添加到Nginx中。

论坛徽章:
0
67 [报告]
发表于 2016-05-12 22:19 |只看该作者
回复 1# crazyhadoop


   

论坛徽章:
0
68 [报告]
发表于 2016-05-12 22:20 |只看该作者
回复 2# cjfeii


    download

论坛徽章:
72
20周年集字徽章-20	
日期:2020-10-28 14:04:30操作系统版块每日发帖之星
日期:2016-07-13 06:20:0015-16赛季CBA联赛之广夏
日期:2016-07-10 09:04:02数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00操作系统版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-04 06:20:00数据库技术版块每日发帖之星
日期:2016-07-03 06:20:00操作系统版块每日发帖之星
日期:2016-07-03 06:20:00数据库技术版块每日发帖之星
日期:2016-07-02 06:20:00操作系统版块每日发帖之星
日期:2016-07-02 06:20:00
69 [报告]
发表于 2016-05-13 11:49 |只看该作者


回复 68# nmgchjp


   

论坛徽章:
0
70 [报告]
发表于 2016-06-03 16:20 |只看该作者
好想要一本第二版学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP