Nginx作为一个轻量级、高性能的Web中间件服务,究竟哪些技能点备受青睐?如何巧妙避地开中间件中的大小坑,避免反复出现的问题?欢迎参与话题与陈杰老师共同讨论,如何在工作中用好、用精Nginx中间件。
花式填坑活动是慕课网开展的在线答疑,目前仅限PC端用户参与。每期1个主题,1位大牛嘉宾。用户可围绕当期话题进行提问,嘉宾将在规定时间内针对问题进行详细解答。
以下内容精选在花式填坑第14期。
Q:Nginx现在挺火的,想问问老师大家都是怎么使用的?
JesonChen:企业怎么使用,其实最多的就是代理服务,基于代理可以配置负载均衡、缓存、动静分离。这就不作详细介绍,我的课程都会介绍,下面我说说个人巧用,来举个简单例子!
我们经常需要在服务器、或者局域网知道自己的出口IP,大部分的人都会通过打开浏览器,去ip138查找。这个需求,只需要你有一台公网的Nginx服务,配置几个变量就可以把你的出口IP和地域信息return回来,用起来挺方便的。
Q:ng 处理并发
JesonChen:首先,处理并发不能光靠ng(Nginx),也不是说Nginx用了并发量就能上去,得看你怎么用,或者说什么场景中。以我经验,Nginx单台承受5000-10000的并发是没有问题的。
淘宝双十一时,我们压测的接口就是用的tegine(基于nginx开源)来作中间件代理后端服务得出得数据。
Q:静态资源在nginx端的缓存生产环境是否已经不在大面积的使用?
JesonChen:很好的问题,对于这个问题,我从下面几个方向来回答您:
1、确实,现在虚拟云的逐步推广,CDN最早整合到了云环境的应用中,但不代表nginx作为静态资源的缓存减少,因为CDN的服务商,也会用到复合自己要求的静态资源web服务,如nginx就是一款非常适合作静态资源缓存的例子。
2、对于已经使用了cdn的技术公司,nginx虽然不用作边缘节点的缓存服务,但是同样可以作很好的源站服务。
3、对于静态资源缓存,我们可以按照类型,或者大小来分,可以区分不同种类,业务要求时效性不同,对于缓存的策略、可控性强度也是不同的,CDN往往更多的用户大文件、时效性更新慢的场景中,对于时效性高的还是需要我们自建缓存服务的。
Q:使用Nginx时,遇到过哪些坑?
JesonChen:坑一、因为Nginx的access日志磁盘不够用,把磁盘换成阿里云文件存储盘,导致nginx处理性能下降,高峰期前端出现502,一直拿了后台服务找问题,哪知是这货惹得祸。
坑二、Nginx配置HTTPS服务,openssl设置没设置过期,导致网站使用一个月后,证书需要失效,坑大了,当时前台的版本都发布出去了。工作这些年,主要用的Nginx,遇到过还有一些,但绝大部分不是Nginx本身的问题,也都有方法可以解决。
Q:netty和nginx哪个更有价值用于java
JesonChen:netty是JAVA中网络应用程序框架,用于Socket通信这层开发,而Nginx更多的一个常见于HTTP协议层代理服务和静态资源web服务,从性质上不一样,决定使用场景会不一样。
Q:Nginx的性能优势,在实际项目操作中是否够轻便?能否举例
JesonChen:最近我遇到的真实场景:是我技术支持的一家公司,他们使用的是Apache+DSO+php的中间件模式,apache采用的是prefox的进程的工作方式,这种模式一到高峰期数据库连接堆积,前端负载负荷过高,导致这家公司一周六日晚上高峰期的就服务响应不了。
因为php的进程工作方式,无法支持真正意义的长连接,如果用长,连接高,不能快速释放、不断堆积容易导致数据库连接堆积。加上apache本身的进程模式,apache处理响应效率低下,导致用户一个连接就会产生一个长连接请求。最终被这层拖垮。
(结论出自单接口的压测,lnmp的处理性能会高出2-3倍、而且在没有使用http cahce的情况下)
所以我建议他们切换接入层方案,在将核心接口改用Nginx+Fastcgi的方式后,此问题得到解决。
讲师介绍,个人主页查看
JesonChen,互联网公司技术负责人、架构师,同时于多家企业兼任技术指导。曾任职于凤凰网,曾就职于阿里文娱任职python开发、曾就职于阿里妈妈任职资深系统工程师。
共同学习,写下你的评论
评论加载中...
作者其他优质文章