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

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

  •  
  •   doyel · Apr 16, 2016 · 11623 views
    This topic created in 3701 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
        1
    yangqi  
       Apr 16, 2016
    php-fpm 占用高的话应该考虑从 php 优化啊,多用缓存
    yaodong
        2
    yaodong  
       Apr 16, 2016
    初期几个着手点:

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