nginx 性能优化,线上场景。

来源:5-17 Nginx的性能优化_CPU亲和配置2

mark_fork

2017-08-15

老师,您好,跟着您的步伐,我学到了nginx第五章,性能优化方案,收获良多。

与此同时,我遇到了一些线上服务响应过慢的问题,因您是这方面的专家,所以想请您帮我理下思路,找到性能瓶颈,以便找到对应的优化方案。

问题如下:

1.线上 nginx  Api 服务器响应过慢,导致客户端请求迟迟不能响应,十分影响用户体验,服务程序代码是 php 编写,nginx web服务器 结合php-fpm进行请求接收与响应。

2.用户请求api会经过1台负载均衡服务器,请求会被轮询负载均衡至4台Api服务器,但4台服务器cpu不够均衡也不够稳定。

3.4台web应用服务器硬件配置

Cpu:5核,主频2.0

内存:10G

4.mysql服务器负载

mysql服务器采用主备模式 负载很小。

5.api web 服务器 上 top命令结果:

http://szimg.mukewang.com/5992b6320001819507540804.jpg

6.sleep状态的php-fpm数量

http://szimg.mukewang.com/5992b6a00001034105350159.jpg

大致保持在305个的水平且每个sleep的fpm 占用的cpu稍高,可能会是什么导致sleep进程产生这么高的cpu占用率呢







写回答

1回答

Jeson

2017-08-16

你好,这个问题,我觉得你可以从这几个方面着手优化:

1、首选你需要找到的系统性能瓶颈的短板,目前就你给我的描述,我觉得php-fpm这块是整体系统性能的短板。

2、就php-fpm的优化,看你给我的截图,我觉得,是php-fpm占用执行效率不高,具体是因为程序本身的执行效率问题,还是请求流量过高导致,或者其它,这个没有体现出来,所以我建议开启php-fpm的slow日志,分析具体的执行效率慢的地方。具体确定请求问题更深层次的的原因,如下:

request_slowlog_timeout = 5s

slowlog = /usr/local/php/log/php-fpm-slowlog.log


另外,如果是短期无法解决、或者性能优化瓶颈无法找到有效手段,让用户体验差是不应该的,导致损失的情况,建议临时可以申请一些机器进行横向扩容。



0
1
mark_fork
嗯嗯,多谢老师,我明天在线上开启下PHP-FPM慢执行日志,因为我们接口请求核心逻辑需要进行token鉴权,token鉴权事分离出来的服务,对外对接的有7个不同类型的app客户端,每次鉴权都是通过网络远程鉴权,初步怀疑问题是在鉴权这块出的问题,等日志产生出来,若还没有明显的性能损失点,还希望老师不吝赐教,谢谢!
2017-08-16
共1条回复

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程