Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
openbaby
V2EX  ›  Linux

如何在单核 256M 内存下压榨出 nginx 的极限性能?

  •  
  •   openbaby · May 17, 2016 · 14019 views
    This topic created in 3669 days ago, the information mentioned may be changed or developed.
    1.centOS6
    2 纯文本静态页面,无图
    3.只运行了 nginx ,目前 nginx 是默认配置。
    4.cpu 占用 25%左右,但内存已满导致系统失去响应。看了下连接数 70 个 ip 左右。

    这种极端情况下,如何配置 nginx 使其得到优化?是否需要对内核 tcp 连接数进行优化?
    57 replies    2016-05-23 03:50:27 +08:00
    binux
        1
    binux  
       May 17, 2016
    70 个 ip 能导致内存占满系统失去响应?
    micyng
        2
    micyng  
       May 17, 2016
    70 个连接才多少内存, 1M 都不到
    garyalen
        3
    garyalen  
       May 17, 2016 via Android
    线程开小点
    aisk
        4
    aisk  
       May 17, 2016
    难道 nginx 没编译进去支持 sendfile ?
    Tink
        5
    Tink  
    PRO
       May 17, 2016 via iPhone
    怎么可能?还是纯静态页面,这配置带不动 70 链接??
    lelsetsuna
        6
    lelsetsuna  
       May 17, 2016
    vps 超售了吧?
    lbp0200
        7
    lbp0200  
       May 18, 2016 via Android
    问题出在 centos6 上,推荐最小 512 内存,精简组件吧
    lhbc
        8
    lhbc  
       May 18, 2016 via Android
    哪个进程占满内存你要说啊
    hushuang
        9
    hushuang  
       May 18, 2016
    vps 超售吧 FS 在版瓦工上动不动就挂掉 根本没分配到标称的资源
    mreasonyang
        10
    mreasonyang  
       May 18, 2016
    @lbp0200 请问这钟配置的 VPS 用哪个发行版更好些呢?
    kslr
        11
    kslr  
       May 18, 2016 via Android
    @lbp0200 为什么是 centos6 的问题?
    googlebot
        12
    googlebot  
       May 18, 2016 via Android
    有一篇 128m 内存优化 nginx 的文章
    dommyet
        13
    dommyet  
       May 18, 2016 via Android
    去看看我这个的 nginx 配置行不行?可能稍微改一下就好了

    https://github.com/dommyet/lempstack
    msg7086
        14
    msg7086  
       May 18, 2016   ❤️ 1
    啥?极限性能?单核 1G 我 Nginx 跑着每秒 200 多个请求 500 多个并发连接的 API 还没觉得需要优化什么呢。
    ryd994
        15
    ryd994  
       May 18, 2016 via Android
    你贴一下配置文件
    还有 ps aux 的输出
    4679kun
        16
    4679kun  
       May 18, 2016 via Android
    clino
        18
    clino  
       May 18, 2016
    问题是不是并不在 nginx 上?
    你自己弄个测试环境压测一下?
    AntonChen
        19
    AntonChen  
       May 18, 2016
    这个命题... 8 核 32G 内存也不敢说能完全压榨出 Nginx 性能,这样的情况 CPU 并不太耗,内存是关键。需要对内核设置( sysctl )做优化,当然 CPU 太差也不行 不然协调连接的 CPU 资源都没有反而 CPU 又是瓶颈....
    hiboshi
        20
    hiboshi  
       May 18, 2016
    低于 512M 不要用 centos ,
    mengzhuo
        21
    mengzhuo  
       May 18, 2016
    先看是哪个进程吃内存啊, OOM 都不工作啊
    先看看 io 情况, in 0 out 有数值的话,说明超售了。
    raysonx
        22
    raysonx  
       May 18, 2016
    我也觉得是 VPS 超售严重,实际可用内存可能根本不足 128M 。
    openbaby
        23
    openbaby  
    OP
       May 18, 2016
    @Tink
    @lelsetsuna
    @msg7086
    @clino
    @4679kun
    @21paradox
    @googlebot
    @raysonx
    @mengzhuo
    @AntonChen
    @hushuang openVZ 的, top 看了下,并有没占用内存很多的进程,这种情况是不是严重超售了?

    mengzhuo
        24
    mengzhuo  
       May 18, 2016
    呃……才用了 13M 啊亲!!!
    openbaby
        25
    openbaby  
    OP
       May 18, 2016 via iPhone
    @mengzhuo 那其他内存都哪去了呢
    F281M6Dh8DXpD1g2
        26
    F281M6Dh8DXpD1g2  
       May 18, 2016
    @openbaby 不是写了么,cached 226
    msg7086
        27
    msg7086  
       May 18, 2016
    @openbaby 有没有超兽,先报价格和商家。
    esile
        28
    esile  
       May 18, 2016 via iPhone
    超售了吧 哪家的 vps ?
    lincanbin
        29
    lincanbin  
       May 18, 2016   ❤️ 1
    我在 2014 年用了一年的 256MiB 内存的 VPS , CentOS 5 + Nginx + Apache + PHP + MySQL 。
    一天撑 20 多万访问。

    你这样很不科学啊,是超售了吧?
    swap 开大点。
    openbaby
        30
    openbaby  
    OP
       May 18, 2016
    @msg7086
    @esile
    @lincanbin host1plus 最低的那款。 openvz 没法自己加 swap 啊。
    zhangshine
        31
    zhangshine  
       May 18, 2016
    才用了 13M ,看看是不是 nginx 没有配置好
    openbaby
        32
    openbaby  
    OP
       May 18, 2016
    @msg7086
    @liprais
    @zhangshine
    @lincanbin
    @esile
    控制面板里显示内存已经满了。
    Neveroldmilk
        33
    Neveroldmilk  
       May 18, 2016
    这 VPS ,服务商看来快要跑路了。
    chunchu
        34
    chunchu  
       May 18, 2016 via iPhone
    用的跟我是同一款
    youxiachai
        35
    youxiachai  
       May 18, 2016
    买这种配置这么低的 vps..一般都是用来搞 vpn 的吧.....服务商碰到你这种榨性能..估计要哭了...

    不过,服务商超售也不厚道...

    怎么说呢.感觉还是拿钱换性能..毕竟省事...
    ddd2500
        36
    ddd2500  
       May 18, 2016
    nginx fast-cgi cache
    openbaby
        37
    openbaby  
    OP
       May 18, 2016
    @ddd2500 全是静态页面,也需要开启这个吗?
    mengzhuo
        38
    mengzhuo  
       May 18, 2016 via iPhone
    @openbaby 学习下 unix 的内存吧……
    其它内存都用来缓存磁盘文件
    disonlee
        39
    disonlee  
       May 18, 2016
    还是检查下配置吧。这家 vps 价格不便宜。超售肯定没有其他便宜货那么狠。
    ovz 没有不超售的。这家还是比较靠谱的 tk 回复也很快 态度也很好 就是有点略贵
    还有 说要跑路的准备好 1000 万了么。。。
    caola
        40
    caola  
       May 18, 2016
    我的就是 256M 内存的 debian8 , nginx 网站日志文件一天能产生 4G 多,至于访问量嘛……
    fstab
        41
    fstab  
       May 18, 2016
    搬瓦工 64M VPS
    系统是: debian6 x86
    安装的环境是

    服务器解译引擎 lighttpd/1.4.31
    PHP 版本( php_version ): 5.4.45-0+deb7u2

    测试页面是静态网页, CSS/图片放在 CDN 上的

    阿里云性能测试 Lite 200 线程

    PHP 探针显示
    物理内存:共 72 M , 已用 69.2 M , 空闲 2.8 M , 使用率 96.11%
    Cache 化内存为 56.75 M , 使用率 78.82 % | Buffers 缓冲为 0 M
    真实内存使用 12.45 M , 真实内存空闲 59.55 M , 使用率 17.29 %
    SWAP 区:共 16 M , 已使用 4.28 M , 空闲 11.72 M , 使用率 26.75 %

    也就是说你的环境有问题吧。。。
    ryd994
        42
    ryd994  
       May 18, 2016 via Android
    @openbaby 你别管控制面板里说什么
    自己 free -w 看看
    我的 VPS 控制面板里也是常满的,因为 cache 也算进去了
    msg7086
        43
    msg7086  
       May 18, 2016
    @openbaby host1plus 这辣鸡你拿来跑生产?
    好歹也用个稍微正常点的商家吧。
    openbaby
        44
    openbaby  
    OP
       May 18, 2016
    @lincanbin
    @msg7086
    @ryd994
    @flyz
    @disonlee
    @mengzhuo 这 vps 似乎对 tcp socket 限制为 1000 ,是不是这原因导致。。
    msg7086
        45
    msg7086  
       May 18, 2016
    @openbaby 我觉得不是。建议你先做一下服务器性能测试……
    openbaby
        46
    openbaby  
    OP
       May 18, 2016
    @msg7086 我 wget 下载东西都下不动了,提示 failed: No buffer space available.然后把我 nginx kill 后就能下了。。
    msg7086
        47
    msg7086  
       May 18, 2016
    以及如果你有时间的话,可以去 webhostingtalk 上搜一下他家的差评,慢慢品读,然后可以再花点时间买个新的……
    msg7086
        48
    msg7086  
       May 18, 2016
    @openbaby No buffer space available 是 TCP 内核限制没错,说明你并发连接数超过上限了。
    这除了换 KVM/XEN 以外无解。
    之前在某家日本 OVZ 上跑的时候也遇到过了。(当然那家跑的时候并发量比你大得多。
    openbaby
        49
    openbaby  
    OP
       May 18, 2016
    @msg7086 请推荐性价比较高的 KVM/XEN 架构 vps 。
    flowerdance
        50
    flowerdance  
       May 19, 2016 via Android   ❤️ 1
    @openbaby ramnode 试试
    msg7086
        51
    msg7086  
       May 19, 2016   ❤️ 1
    @openbaby ramnode ,听说 hostus 也还行,但是我没用过,你也可以试试。
    openbaby
        52
    openbaby  
    OP
       May 19, 2016
    @msg7086
    @flowerdance 这两家的 openVZ 不知道限制为多少。。
    Tink
        53
    Tink  
    PRO
       May 19, 2016
    @msg7086 hostus 使用者表示不咋地
    openbaby
        54
    openbaby  
    OP
       May 19, 2016
    @Tink 我看了感觉低配的性价比不如 vultr 高啊
    msg7086
        55
    msg7086  
       May 19, 2016 via Android
    @openbaby “ kvm ”
    高并发使用最好还是别用 vz 。
    fstab
        56
    fstab  
       May 19, 2016 via Android
    @msg7086 不赞同最后一句,应该是别用超售的 vz
    wclebb
        57
    wclebb  
       May 23, 2016 via iPhone
    @flyz 自言自语
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1678 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 183ms · UTC 00:00 · PVG 08:00 · LAX 17:00 · JFK 20:00
    ♥ Do have faith in what you're doing.