V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
工单节点使用指南
• 请用平和的语言准确描述你所遇到的问题
• 厂商的技术支持和你一样也是有喜怒哀乐的普通人类,尊重是相互的
• 如果是关于 V2EX 本身的问题反馈,请使用 反馈 节点
keepeye
V2EX  ›  全球工单系统

阿里云超售了?明明买的 1g 内存,现在系统内查看只有 500MB 不到。

  •  
  •   keepeye · 2019-07-07 12:52:31 +08:00 · 8169 次点击
    这是一个创建于 1726 天前的主题,其中的信息可能已经有所发展或是发生改变。
    专有网络

    1 vCPU 1 GiB (I/O 优化)

    ecs.t5-lc1m1.small 1Mbps


    free -m 结果

    total used free shared buff/cache available
    Mem: 487 140 155 0 191 321
    Swap: 0 0 0


    我说怎么 supervisord 进程都被强杀了,系统变的卡卡的,结果是内存变小一半多
    第 1 条附言  ·  2019-07-08 11:55:29 +08:00
    问题在重启服务器后得到解决,发工单客服给的解释是 512M 升级到 1g 没重启导致的,虽然我并没有升级过,也不打算追究了。

    至于 supervisor 日志显示的就是 kill -9,没有其他信息了,可以保证我没有执行过这个命令

    至于 free -m 显示结果是否准确?不想深究,总之这里肯定是有问题的,大家也不用争来争去的没意思。
    48 条回复    2019-07-08 19:40:40 +08:00
    Duluku
        1
    Duluku  
       2019-07-07 13:04:57 +08:00 via iPhone
    只要是基础服务商,就存在超售现象。这是很常见的,做法是工单解决(虽然也不一定能够得到解决…)云服务商如何调配资源,就是及时调整策略已满足客户需要才是他们琢磨的问题。
    gstqc
        2
    gstqc  
       2019-07-07 13:05:33 +08:00 via Android
    你不会查下每个字段是什么意思吗?
    yukiww233
        3
    yukiww233  
       2019-07-07 13:09:39 +08:00
    没看出来结果哪里有问题
    blankme
        4
    blankme  
       2019-07-07 13:18:54 +08:00
    这个是 0.5G 的配置,应该是给你分配错机型了
    ruimz
        5
    ruimz  
       2019-07-07 13:26:20 +08:00 via Android   ❤️ 8
    想看 2,3 楼怎么解释按 m 输出 total487 是 1G 内存
    mason961125
        6
    mason961125  
       2019-07-07 13:30:43 +08:00
    找客服 ❎
    上 V2EX ✅
    gstqc
        7
    gstqc  
       2019-07-07 13:33:00 +08:00 via Android
    @ruimz dmesg 不会用吗?
    free 又查不了物理内存

    自己不明白就问 为什么我 1G 内存用 free 显示只有 0.5G
    shiji
        8
    shiji  
       2019-07-07 13:36:47 +08:00
    @gstqc 我觉得 free -m 没毛病。
    houzhimeng
        9
    houzhimeng  
       2019-07-07 13:40:19 +08:00   ❤️ 2
    @gstqc #7 你为何如此自信
    Windelight
        10
    Windelight  
       2019-07-07 13:47:28 +08:00 via Android
    其实这个还是坑人的,因为腾讯云我也遇见过,他有一个为硬件保留的内存,我特码这不都是已经虚拟化了你去哪给硬件保留去?
    Humorce
        11
    Humorce  
       2019-07-07 13:54:29 +08:00
    @gstqc #7

    你的 free 是从 ludashi 源 安装的?
    ruimz
        12
    ruimz  
       2019-07-07 13:56:10 +08:00 via Android   ❤️ 7
    @gstqc 你为什么不继续#2 说明为什么查明 free -m 每个字段的含义就可以解决楼主的问题?
    #7 又开始 dmesg,就算 dmesg 可以说明楼主的问题,那你为什么不在#2 说明呢?

    何况有问题为什么要问你?从#2 和#7 来看,你除了秀优越感以外,能对问题做出什么有效回答吗?
    chinesestudio
        13
    chinesestudio  
       2019-07-07 14:00:17 +08:00 via Android
    top 不会用么
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2019-07-07 14:08:18 +08:00
    应该分配错了,提工单解决吧。另外云平台超售也只超售 cpu、io,内存不超售。
    gstqc
        15
    gstqc  
       2019-07-07 14:40:01 +08:00
    @Humorce #11 如果你不明白 free 为什么显示的不是物理内存就没必要讨论了

    @houzhimeng
    @ruimz 是是是,阿里云超售了。是不是感觉心里很舒畅
    troywinter
        16
    troywinter  
       2019-07-07 14:48:03 +08:00
    先别忙着下结论,你解决问题的思路就不对,目前你列出的证据没有说明进程被强杀和内存有关系,你先看看 supervisor 的 log 看看是什么原因,也许不是阿里云的问题呢?
    Humorce
        17
    Humorce  
       2019-07-07 15:05:31 +08:00
    @gstqc #14
    free 非实际物理内存,也不会把 1G 显示成 487M。
    poplar50
        18
    poplar50  
       2019-07-07 15:12:08 +08:00 via Android
    total 487 是肯定有毛病
    leekafai
        19
    leekafai  
       2019-07-07 15:13:05 +08:00 via Android
    free 显示的不是物理内存跟 op 提的问题有啥联系?难道阿里云是给你物理主机?可能这就是大佬吧。
    martinsu
        20
    martinsu  
       2019-07-07 16:13:19 +08:00
    原来,不明白 free 命令是什么原理,就丧失了讨论的资格。瞬间感觉自己好渺小,大佬好强大 [doge]
    sunsmooth
        21
    sunsmooth  
       2019-07-07 16:25:46 +08:00 via iPhone
    cat /proc/meminfo
    或者 top 看看
    Nitroethane
        22
    Nitroethane  
       2019-07-07 17:09:20 +08:00   ❤️ 2
    在没有作任何调查的情况下不要妄下结论,先去看看 supervisord 的日志去排查下错误。
    再者,根据 free 的 manual,free 的输出中 total 字段是 /proc/meminfo 中 MemTotal 和 SwapTotal 两个字段的和,因此 total 的值实际是物理内存和交换空间二者的和。
    还有前面的,好好回答问题可以吧,别一上来就戾气那么大
    swulling
        23
    swulling  
       2019-07-07 17:27:01 +08:00 via iPhone
    内存不会超售的…联系客服
    Duluku
        24
    Duluku  
       2019-07-07 17:57:39 +08:00 via iPhone   ❤️ 1
    内存不超售的话…为什么我阿里云有时候 MySQL 启动不了、报错是内存不足… 然后我改 MySQL 分配的内存、改到 128M 都是偶尔能启动、偶尔失败… 最后就放弃了…当然、free 当时每次都说有 1g 内存,我反正是不信的
    feelinglucky
        25
    feelinglucky  
       2019-07-07 18:06:48 +08:00
    cat /proc/meminfo | grep MemTotal

    看看,建议提个工单
    feelinglucky
        26
    feelinglucky  
       2019-07-07 18:07:55 +08:00
    PS,补充下,个人有个习惯,就是任何交付的环境跑之前用 unixbench 跑跑性能,看看有没有问题,供参考
    lincanbin
        27
    lincanbin  
       2019-07-07 18:48:42 +08:00 via Android
    阿里云 ECS 是 XEN 虚拟化的虚拟机,内存是无法超售的。
    估计是分配错了,提工单让客服看下。
    uyhyygyug1234
        28
    uyhyygyug1234  
       2019-07-07 18:53:40 +08:00
    恭喜楼主喜提 bug
    jadec0der
        29
    jadec0der  
       2019-07-07 22:48:12 +08:00
    超售的问题主要出在 cpu 和 io 上吧,内存超售也太…明目张胆了
    mason961125
        30
    mason961125  
       2019-07-07 22:52:04 +08:00
    @lincanbin #25 张口就来 Xen ?
    opengps
        31
    opengps  
       2019-07-07 22:53:21 +08:00 via Android
    超售不会让你看到小的,楼主超售的概念还没搞明白,t5 是名副其实的超售
    p2p
        32
    p2p  
       2019-07-07 22:56:53 +08:00
    每个贴里都是人才倍出😑
    ivmm
        33
    ivmm  
       2019-07-07 23:23:13 +08:00
    是实例分配错了,超售不是这个意思。

    按契约来,阿里云的共享型、性能突发型的都是标明的性能共享,超售的。

    计算型、内存型这样的都是性能独享的。
    c0878
        34
    c0878  
       2019-07-07 23:26:50 +08:00
    内存不会超售的 你这个应该是系统开错机器了 发个工单附上订单号和实例 id 让客服解决就好
    1234rty
        35
    1234rty  
       2019-07-07 23:26:56 +08:00
    超售要是能让你一眼看出来就不叫超售了
    xiaolanger
        36
    xiaolanger  
       2019-07-08 01:31:40 +08:00
    虽然不知道阿里云的内存会不会超售,但是,超售的话,你这么看应该是看不出来的
    lincanbin
        37
    lincanbin  
       2019-07-08 02:07:40 +08:00 via Android
    @mason961125 早年是 XEN,刚查了下,现在是 KVM 虚拟化,一样是无法超售内存的。
    liuxey
        38
    liuxey  
       2019-07-08 08:19:53 +08:00
    发现有些人可能不懂 Linux,哈哈
    cubecube
        39
    cubecube  
       2019-07-08 09:13:07 +08:00 via Android
    @lincanbin vmware 可以超售内存,我们内网测试环境经常超售,坑爹
    Cloutain
        40
    Cloutain  
       2019-07-08 09:26:21 +08:00
    让你见识见识我套路云的厉害
    xman99
        41
    xman99  
       2019-07-08 09:36:08 +08:00
    嗯 , 找客服聊聊人生吧
    skymei
        42
    skymei  
       2019-07-08 09:38:13 +08:00
    超售正常的,我之前就干过,没办法用户要新开,母机内存达到上限, 只能调下某些客户的配置,虽然不太好 /(ㄒoㄒ)/~~,但是老大让我这么干的
    dot2017
        43
    dot2017  
       2019-07-08 09:45:07 +08:00
    难道楼上有些人不是用 free -m 查内存的么……
    firemiles
        44
    firemiles  
       2019-07-08 09:57:24 +08:00
    free -m 会隐藏部分系统保留内存,但也不会保留 500M 那么多
    goodryb
        45
    goodryb  
       2019-07-08 10:11:12 +08:00
    根据楼主提供的规格型号来看,确实是 1CPU 1G 内存的,所有规格可以在这里查看 https://help.aliyun.com/document_detail/25378.html

    建议楼主先确认下是不是规格型号搞错了,如果没错,提交工单咨询下客服看如何处理,结果最好也 append 一下

    另外,不管是 xen 还是 kvm,内存都是不超卖的。
    zqfxch
        46
    zqfxch  
       2019-07-08 11:17:41 +08:00
    提工单查一下吧,内存是不超卖的,分配错误的可能性也很小,总之要么搞错了规格要么真的见了匪夷所思的 bug
    suriv520
        47
    suriv520  
       2019-07-08 11:25:24 +08:00   ❤️ 2
    ✅ 避免预设立场的提问
    ✅ 避免反问式回答
    ✅ 关注问题本身与解决问题本身

    大家都好好说话。

    我想说的是,**无论是否超售,都应该是无法简单地通过 free 来判断的。**
    市场上的虚拟化架构,hypervisor 声明了多少内存空间,虚拟机里面就会显示多少内存空间。即使宿主机只有 2G,也可以让 hypervisor 声明出一个 64G 内存的虚拟环境出来。操作系统本身没有可靠途径检测“实际可用”的内存大小(非得要检测的话那就是跑实际的 memtest 了)。只不过当虚拟机操作系统开始申请超过实际剩余的空间时,底层会给出报错罢了。反映到操作系统,就是 mem alloc 被拒绝了同时产生 OOM。

    把虚拟机的内存分配请求重新映射到物理内存中也是 hypervisor 的作用之一。

    我上面没把各个层说得很具体,是因为这里的“层”实在太多了,比如:

    系统通电之后,是内存控制芯片对内存相关信息进行检测(存在欺骗的可能);
    系统引导最初,是 BIOS 最先检测内存大小,在检测之前,BIOS 是运行于 ROM 的,并没有 RAM 给它用。所谓的检测,也就是“问一下”内存控制器而已(存在欺骗的可能+1 );
    引导之后,BIOS 会做一系列的预留与分配,以便把实模式的真实地址映射为操作系统可用的地址,同时保留一部分供硬件使用的区域(存在欺骗的可能+2 );
    操作系统引导之后,一般操作系统内核也会检测内存大小。检测方式为“问一句 BIOS ”(存在欺骗的可能+3 );
    执行 free 时,我记得 free 应该是从内核直接读取的内存大小,反映在 shell 中,就是 /proc 里的东西(存在欺骗的可能+4 );
    (希望有了解底层原理的人帮忙勘误)

    看见了吧。云厂商想超售,有无数种方法让你感觉不出来,根本不用明目张胆地用 512M 内存“骗”你。这么骗,简直就是欺负用户智商低下。

    我打这段话是对上面回复的同学们的回复。楼主你还是去问问客服吧。
    zqfxch
        48
    zqfxch  
       2019-07-08 19:40:40 +08:00
    楼主再仔细检查一下是否升级过吧,客服如果说升级过不会没有根据的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1195 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:14 · PVG 02:14 · LAX 11:14 · JFK 14:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.