V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
openbaby
V2EX  ›  Linux

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

  •  
  •   openbaby · 2016-05-17 22:20:31 +08:00 · 12790 次点击
    这是一个创建于 2872 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.centOS6
    2 纯文本静态页面,无图
    3.只运行了 nginx ,目前 nginx 是默认配置。
    4.cpu 占用 25%左右,但内存已满导致系统失去响应。看了下连接数 70 个 ip 左右。

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

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

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

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

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

    怎么说呢.感觉还是拿钱换性能..毕竟省事...
    ddd2500
        36
    ddd2500  
       2016-05-18 17:51:08 +08:00
    nginx fast-cgi cache
    openbaby
        37
    openbaby  
    OP
       2016-05-18 18:02:40 +08:00
    @ddd2500 全是静态页面,也需要开启这个吗?
    mengzhuo
        38
    mengzhuo  
       2016-05-18 18:42:49 +08:00 via iPhone
    @openbaby 学习下 unix 的内存吧……
    其它内存都用来缓存磁盘文件
    disonlee
        39
    disonlee  
       2016-05-18 18:56:16 +08:00
    还是检查下配置吧。这家 vps 价格不便宜。超售肯定没有其他便宜货那么狠。
    ovz 没有不超售的。这家还是比较靠谱的 tk 回复也很快 态度也很好 就是有点略贵
    还有 说要跑路的准备好 1000 万了么。。。
    caola
        40
    caola  
       2016-05-18 19:00:12 +08:00
    我的就是 256M 内存的 debian8 , nginx 网站日志文件一天能产生 4G 多,至于访问量嘛……
    flyz
        41
    flyz  
       2016-05-18 19:02:12 +08:00
    搬瓦工 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  
       2016-05-18 19:30:15 +08:00 via Android
    @openbaby 你别管控制面板里说什么
    自己 free -w 看看
    我的 VPS 控制面板里也是常满的,因为 cache 也算进去了
    msg7086
        43
    msg7086  
       2016-05-18 20:16:51 +08:00
    @openbaby host1plus 这辣鸡你拿来跑生产?
    好歹也用个稍微正常点的商家吧。
    openbaby
        44
    openbaby  
    OP
       2016-05-18 23:03:01 +08:00
    @lincanbin
    @msg7086
    @ryd994
    @flyz
    @disonlee
    @mengzhuo 这 vps 似乎对 tcp socket 限制为 1000 ,是不是这原因导致。。
    msg7086
        45
    msg7086  
       2016-05-18 23:40:47 +08:00
    @openbaby 我觉得不是。建议你先做一下服务器性能测试……
    openbaby
        46
    openbaby  
    OP
       2016-05-18 23:45:22 +08:00
    @msg7086 我 wget 下载东西都下不动了,提示 failed: No buffer space available.然后把我 nginx kill 后就能下了。。
    msg7086
        47
    msg7086  
       2016-05-18 23:46:04 +08:00
    以及如果你有时间的话,可以去 webhostingtalk 上搜一下他家的差评,慢慢品读,然后可以再花点时间买个新的……
    msg7086
        48
    msg7086  
       2016-05-18 23:47:34 +08:00
    @openbaby No buffer space available 是 TCP 内核限制没错,说明你并发连接数超过上限了。
    这除了换 KVM/XEN 以外无解。
    之前在某家日本 OVZ 上跑的时候也遇到过了。(当然那家跑的时候并发量比你大得多。
    openbaby
        49
    openbaby  
    OP
       2016-05-18 23:56:22 +08:00
    @msg7086 请推荐性价比较高的 KVM/XEN 架构 vps 。
    flowerdance
        50
    flowerdance  
       2016-05-19 00:08:54 +08:00 via Android   ❤️ 1
    @openbaby ramnode 试试
    msg7086
        51
    msg7086  
       2016-05-19 00:12:48 +08:00   ❤️ 1
    @openbaby ramnode ,听说 hostus 也还行,但是我没用过,你也可以试试。
    openbaby
        52
    openbaby  
    OP
       2016-05-19 00:21:23 +08:00
    @msg7086
    @flowerdance 这两家的 openVZ 不知道限制为多少。。
    Tink
        53
    Tink  
       2016-05-19 00:32:15 +08:00
    @msg7086 hostus 使用者表示不咋地
    openbaby
        54
    openbaby  
    OP
       2016-05-19 00:35:07 +08:00
    @Tink 我看了感觉低配的性价比不如 vultr 高啊
    msg7086
        55
    msg7086  
       2016-05-19 01:30:44 +08:00 via Android
    @openbaby “ kvm ”
    高并发使用最好还是别用 vz 。
    flyz
        56
    flyz  
       2016-05-19 16:28:17 +08:00 via Android
    @msg7086 不赞同最后一句,应该是别用超售的 vz
    wclebb
        57
    wclebb  
       2016-05-23 03:50:27 +08:00 via iPhone
    @flyz 自言自语
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4024 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:15 · PVG 13:15 · LAX 22:15 · JFK 01:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.