前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx性能优化

Nginx性能优化

作者头像
wangxl
发布2018-03-07 16:52:42
1.4K0
发布2018-03-07 16:52:42
举报
文章被收录于专栏:PHP在线PHP在线

Nginx作为一个非常流行和成熟的Web Server和Reserve Proxy Server,网上有大量的性能优化教程,但是不同的业务场景千差万别,什么配置是最适合自己的,需要大量的测试和实践以及不断的优化改进。最近用户调用量突破百万大关之后,就遇到了一些问题,虽然不算太复杂,但也折腾了挺长时间才搞定,积累了不少经验。

碰到的这个问题其实已经有一段时间了,有客户给我们反馈调用超时,但是我们自己从系统监控上看都是正常的,只有几十毫秒肯定不会超时,怀疑是不是网络的原因,但是出现几次后,就隐隐感觉这个问题可能不是偶发性的,应该还有深层次的原因。

因为我们服务面向企业客户的,虽然每家客户的调用量可能会非常大,但每家企业客户就那么几个公网IP,即使以后有上千家客户,Nginx也可以轻松支撑这些并发连接。因此,首先先从网络上对Nginx长连接作了优化,将长连接从原来配置的5秒钟改成5分钟,将每次建立连接请求的数目从默认的100调整到1000。

代码语言:javascript
复制
keepalive_timeout 300;
keepalive_requests 1000;

调整完毕后,通过netstat -anp命令可以看到,新建连接请求会减少,说明长连接已起到作用。但过了一段时间,仍然发现有客户调用超时的情况发生,从Nginx日志中可以看到请求时间还是有超过1s的,甚至有长达20s左右的,如下所示:

(查看原图)

并且从Zabbix上的监控发现一个现象,当connection writing或active数突然增高时,请求时间就相应的出现较多超时:

(查看原图)

查看应用的日志,发现执行时间并不长:

(查看原图)

应用程序里统计的时间,只是从业务开始执行到执行结果的时间,这个还没有算Tomcat容器的执行时间,外部请求的执行路径如下:

代码语言:javascript
复制
client --> Nginx --> Tomcat --> App

会不会是Tomcat容器本身执行有问题呢,把Tomcat请求的日志调用出来,发现这个时间点前后的执行也是正常的:

从请求路径上分析,肯定是Nginx到Tomcat这层存在一些问题。正在排查这个问题的时候,突然发现有大量30s左右的超时,从Zabbix上也观察到connection writing非常高,如下所示:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 php 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档