Recommended Services
› Amazon Web Services
› LeanCloud
› New Relic
› ClearDB
doyel
V2EX  ›  云计算

阿里云主机的 nginx+php-fpm 环境如何优化高并发啊。。。

  •  
  •   doyel · Apr 16, 2016 · 12057 views
    This topic created in 3856 days ago, the information mentioned may be changed or developed.

    现在已经是 4 台 4 核 8G 内存主机架了负载均衡了,但是最近高峰访问的时候基本上四台机器 top 了下 CPU 资源完全耗尽,按日志换算了下,访问量其实也不算非常大。

    php-fpm 试了下切换套接字模式和 TCP 模式,基本没差别

    现在动态模式 进程数 200-500 ,全负荷时主机内存占用 50%左右,唯独 CPU 使用率居高不下。。。

    求推荐优化意见和方案,谢谢各位了!

    ps. 所有 package 都是阿里云的 centos 源上安装的

    27 replies  •  2016-07-06 19:14:42 +08:00
    yangqi
    yangqi
    Apr 16, 2016
    1
    php-fpm 占用高的话应该考虑从 php 优化啊,多用缓存
    yaodong
    yaodong
    Apr 16, 2016
    2
    初期几个着手点:

    - 先本地做分析 profiling ,工具是 xhprof 。找到 PHP 中的性能瓶颈,通过优化程序或者使用缓存的方式干掉它们。
    - 然后看 SQL 慢查询,找到比较慢的 SQL 查询。通过优化查询方式和数据库索引等方式干掉它们。
    - 升级到 PHP7 (如果你没有升级的话)。
    - 如果有前端 AJAX 请求,尝试优化、合并、浏览器缓存这些请求。
    msg7086
    msg7086
    Apr 16, 2016
    3
    htop 先看看是谁吃了这么多 CPU 。
    另外我不知道这货 CPU 到底什么水平,如果 CPU 太烂也可以考虑换机器。
    ZE3kr
    ZE3kr
    Apr 16, 2016 via iPhone
    4
    PHP 跑的什么?网站吗?
    ZE3kr
    ZE3kr
    Apr 16, 2016 via iPhone
    5
    升级到 PHP7.0 ,数据库如果是 MySQL ,升级到 5.7 。然后在本地搞缓存,最好上 UPYUN 什么的吧,提高静态文件速度。
    gzelvis
    gzelvis
    Apr 16, 2016 via iPhone
    6
    阿里那是硬盘 io 太烂导致的 cpu up ,没救
    shiny
    shiny
    PRO
    Apr 16, 2016
    7
    高峰期看哪个进程占的 CPU , PHP 就先对 PHP profiling , MySQL 就查 SQL
    hellojinjie
    hellojinjie
    Apr 16, 2016 via Android
    8
    cpu 利用率高,看是哪个空间的, sys 还是 user 的,要是 sys 的那没救了
    ug888168
    ug888168
    Apr 16, 2016 via Android
    9
    可以考虑一下用 opcache 缓存 php ,应该能降低 CPU 负荷
    millken
    millken
    Apr 16, 2016 via Android
    10
    放弃 fpm,拥抱 swoole
    lbp0200
    lbp0200
    Apr 16, 2016 via Android
    11
    加服务器
    oott123
    oott123
    Apr 16, 2016
    12
    有 MySQL 的话,改用阿里云自己的 RDS 试试看吧……
    id4alex
    id4alex
    Apr 16, 2016
    13
    nginx 并发上线卡一道吧,之前就是搜索引并发直接搞挂了,后来在 nginx 卡了每秒的并发基本解决 90%问题
    doyel
    doyel
    OP
    Apr 16, 2016
    14
    @oott123 已经是 RDS 了。。。
    doyel
    doyel
    OP
    Apr 16, 2016
    15
    @msg7086 pp-fpm 吃 CPU 厉害。。。所以我觉得是 FASTCGI 运行效率太低了。。。要么就是真的这破机器运算能力太差。。。
    odirus
    odirus
    Apr 17, 2016
    16
    @ug888168 +1 ,大部分情况下都能有非常明显的效果
    misty8873
    misty8873
    Apr 17, 2016 via iPhone
    17
    兄弟,还是来我这用物理机吧。。。
    denghongcai
    denghongcai
    Apr 17, 2016
    18
    你也不说下你并发的数量到底是多少
    denghongcai
    denghongcai
    Apr 17, 2016
    19
    阿里云上,用 Laravel 这种慢框架, PHP7+RDS ,双核 4G 内存,非 IO 优化实例,单台机器大概 250QPS
    doyel
    doyel
    OP
    Apr 17, 2016
    20
    @denghongcai 每秒也就千次不到。。。。
    denghongcai
    denghongcai
    Apr 17, 2016
    21
    @doyel 单台千次?那其实还挺正常的,看看 RDS 的日志 QPS 到了多少?看看 CPU 的负载是耗在 sys 还是 usr 上
    doyel
    doyel
    OP
    Apr 17, 2016
    22
    @denghongcai 总共。。。
    doyel
    doyel
    OP
    Apr 17, 2016
    23
    @denghongcai 峰值 QPS 5000
    aliyunservice
    aliyunservice
    Apr 18, 2016
    24
    @yaodong 建议不错,建议楼主可以先针对这几点分析优化下哦。
    xiaooloong
    xiaooloong
    Apr 20, 2016
    25
    虚拟机的单核心性能确实没有有物理机的好
    njwangchuan
    njwangchuan
    Jul 6, 2016
    26
    4 台 4 核 8G 内存主机,换成 8-12 台 2 核 4GB 试试。话说不能自动扩展的云计算服务器都是耍流氓。
    doyel
    doyel
    OP
    Jul 6, 2016 via iPhone
    27
    @njwangchuan 太同意这句话了……不能按 lb 负载情况自动扩张的根本意义不大
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1904 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 15:25 · PVG 23:25 · LAX 07:25 · JFK 10:25
    ♥ Do have faith in what you're doing.