免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
31 [报告]
发表于 2016-04-16 22:23 |只看该作者
回复 1# crazyhadoop

简单分享个人之前对 nginx 的一些研究,比较零碎。

1. Nginx 的动态配置的处理

reload 的这种配置方式应该是现在比较通用的做法。处理方式基本上就是
1)停止 listen 端口,旧有连接/session仍然老的配置上处理
2)load 新的配置,监听新配置对应的端口,新连接就由新的 listen 处理
3)老的连接结束之后,将老的配置一并释放掉

2. 惊群的处理以及 REUSEPORT
Nginx 通过 lock 的方式实现了多进程间的互斥,避免了惊群效应

此外,在支持了 REUSEPORT 的内核上,其实惊群效应就更容易避免了。因为每个独立进程都可以 listen 相同的 IPORT。印象中有人提了类似的 patch,也就是先 fork,然后再 listen,好像 Nginx 官方没有接受。不知道当前最新的版本是否合并了。

3. Nginx 中一些可借鉴的代码
比如 share mem 的操作,atomic 和 lock 的操作,CPU Affinity 的操作等等,都是可以用来作为借鉴的优秀代码。


   

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 赞一个!

查看全部评分

论坛徽章:
0
32 [报告]
发表于 2016-04-17 10:37 |只看该作者
nginx的强大是无容置疑的,应用的广泛度也远超我们的想象,我们是一个大型物流企业,整个机房大约200多台服务器,互联网站点及业务系统超过50个,我们用nginx主要做了 :
1)整合互联网站点的发布管理:
利用proxy_pass反向代理了全部大部分的互联网业务系统,有以下优势:
- 节省互联网IP资源
- 方便灵活的实现访问控制
- 使用upstream实现负载分流及failover
- 简单的waf(针对部分已经攻击及扫描探测进行访问阻止)
- 静态资源的缓存以及压缩,优化访问速度
- 错误页面的重定向处理(部分软件项目的错误页面处理不友好,泄露部署信息,我们使用nginx对错误页面做了重定向)
- https 发布
使用nginx整合发布管理,减少互联网IP的使用,节省资源是一方面,方便了安全管理。日志集中日志管理与分析也非常方案。
不足:
   nginx无法实现NTLM身份验证的反向代理,我们有少量使用NTLM身份验证的业务系统使用nginx做发布有问题。貌似1.9.x以上的版本解决了类似问题,暂时待验证核实。

2)实现开发测试站点互联网发布的集中管理
开发测试站点互联网发布周期短,新增发布及关闭比较频繁。我们使用nginx配置模版+shell脚本+web控制UI,使用nginx反代实现开发测试站点的自助管理。

3)nginx+php-fpm替代apache+php
在通过一个微信项目的压力测试过程中,我们发现nginx+php-fpm的性能要远远优于apache,所以目前大部分的php项目都使用nginx+php-fpm作为运行环境。

4)ssl offloading
nginx 使用openssl ,性能要优于tomcat的ssl解决方案,并且通过前端的nginx作ssl处理,让tomcat及weblogic专注于业务逻辑的处理,会是一个更好的选择。





评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 赞一个!

查看全部评分

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-25 06:20:002017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:33:2115-16赛季CBA联赛之新疆
日期:2018-04-23 13:55:2315-16赛季CBA联赛之辽宁
日期:2018-07-23 08:59:12
33 [报告]
发表于 2016-04-18 11:18 |只看该作者
如何在实战中熟练使用Nginx?
首先要对原理和运作机制要有一定的理解,然后就是多使用,多想一些更好更简便,方便的调优方法。

如何发挥Nginx的性能?
做好nginx的连接数等性能监控,如果出现访问缓慢或者使用有问题等情况查看机器的硬件是否到瓶颈,如果没到瓶颈在看配置是否出现不合理没有很好的利用硬件性能。

如何在理解Nginx源码的基础上,通过编写Nginx插件来提高自己的编程能力?
编写插件或者模块就是到另一个阶段了,还是那句话,多想多实践,不要拘泥于现状。

论坛徽章:
3
15-16赛季CBA联赛之同曦
日期:2016-03-15 17:09:4315-16赛季CBA联赛之新疆
日期:2016-04-18 14:21:37shanzhi
日期:2016-06-17 17:59:31
34 [报告]
发表于 2016-04-18 14:29 |只看该作者
Nginx 是一个很强大的高性能Web和反向代理服务器,在高连接并发的情况下,Nginx是Apache服务器不错的替代品,所以学之,用之吧~

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
35 [报告]
发表于 2016-04-19 13:29 |只看该作者
学习学习nginx.

论坛徽章:
0
36 [报告]
发表于 2016-04-19 14:31 |只看该作者
不太懂啊,只是简单的搭建过lnmp环境,别的就没有用过了

论坛徽章:
0
37 [报告]
发表于 2016-04-19 14:32 |只看该作者
书,看着挺不错,顶一下

论坛徽章:
0
38 [报告]
发表于 2016-04-21 17:50 |只看该作者
本帖最后由 pingmm 于 2016-04-21 17:52 编辑

回复 31# Godbach


    REUSEPORT 内核就没惊群了?
fork之后每个子进程自己listen同一个端口,
然后加入epoll,连接进来之后只会wake一个epoll_wait?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
39 [报告]
发表于 2016-04-21 22:39 |只看该作者
回复 38# pingmm

fork 之后的 listen,创建的是一个新的 listen fd。在内核态也是一个独立的 socket 结构,因此各进程使用的都是独立的 fd,彼此之间没有共享关系。


   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
40 [报告]
发表于 2016-04-21 22:40 |只看该作者
回复 38# pingmm


然后加入epoll,连接进来之后只会wake一个epoll_wait?


是的,因为各个进程都是独立的 listen fd,所以只会出发对应进程的 epoll。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP