V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
panlista
V2EX  ›  程序员

甲方要求提高服务器资源利用率,目前 cpu 和内存利用率都不达标

  •  2
     
  •   panlista · 181 天前 · 13297 次点击
    这是一个创建于 181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的方案是,单独写一个服务做一些无用功去消耗一部分系统资源,有什么好的方法吗。 基于 springboot

    服务器配置已经是最低了不能再降了

    149 条回复    2022-12-01 20:37:11 +08:00
    1  2  
    panlista
        1
    panlista  
    OP
       181 天前
    用 java 怎么去持续的消耗一部分 cpu 和内存呢,可以提供一下思路吗
    rimutuyuan
        2
    rimutuyuan  
       181 天前
    目前的方案很好,甲方让你怎么做,做好拿到钱就行了
    dolphintwo
        3
    dolphintwo  
       181 天前   ❤️ 2
    搭 k8s ,再上 grafana ,elk ,加收服务费
    zepto
        4
    zepto  
       181 天前   ❤️ 6
    计算 pai
    wu67
        5
    wu67  
       181 天前
    把代码写好很难, 但是把代码写烂还不简单吗? 循环、递归给他满上, 要不就不用 jdk 的排序, 自己手写排序.
    rimutuyuan
        6
    rimutuyuan  
       181 天前   ❤️ 6
    cpu:模拟挖矿,循环进行 sha256 操作
    内存:创建并维护一个 1000W 长度的数组
    cnrting
        7
    cnrting  
       181 天前
    while 1
    hay313955795
        8
    hay313955795  
       181 天前   ❤️ 1
    甲方是觉得服务器资源占用太少,性价比太低吗?
    bthulu
        9
    bthulu  
       181 天前
    简单, 下面这个代码就能跑满一个 cpu. 想跑满几个 CPU, 就开几个线程跑这个方法就行了.
    ```
    int i = 0;
    while(true) {
    if (i == Integer.Max) {
    i = 0;
    }
    i++;
    }
    ```
    xuelu520
        10
    xuelu520  
       181 天前
    给一个大数组排序,排序 N 次
    Leviathann
        11
    Leviathann  
       181 天前   ❤️ 47
    看笑了
    dcsuibian
        12
    dcsuibian  
       181 天前
    这种甲方真是呵呵了
    janus77
        13
    janus77  
       181 天前   ❤️ 4
    挖矿吧,还能赚钱
    Twan
        14
    Twan  
       181 天前
    void fun_c()
    {
    for(;;){ ++i; float = 10000 % 1000; } //CPU

    char * ptr = new char[ 10 * 1024 * 1024];
    delete ptr;
    }

    create_thread(_thread_id, fun_c, ....);

    客户: 真棒
    一个月后客户: 我们需要加钱优化:
    你: 没问题,打钱
    dreasky
        15
    dreasky  
       181 天前
    哪来这么好的甲方
    shazi199
        16
    shazi199  
       181 天前
    估计是军政机关或者学校项目
    winglight2016
        17
    winglight2016  
       181 天前
    最简单的不就是在服务器上跑个压测吗?控制好并发数量,用户看着 DAU 蹭蹭往上涨还不开心死了?
    nomagick
        18
    nomagick  
       181 天前
    服务器啥配置我听听
    dddd1919
        19
    dddd1919  
       181 天前   ❤️ 1
    应该跟甲方解释一下,不是什么数都是越大越好😂
    panlista
        20
    panlista  
    OP
       181 天前
    @rimutuyuan 感觉不好控制啊,比如目前 cpu 利用率才 0.51%,达标需要 15%,怎么能保证系统稳定的情况下再多占用 15%左右的 cpu 呢
    panlista
        21
    panlista  
    OP
       181 天前
    @wu67 要可持续的占用,系统用户少就算再烂的代码也有服务闲置的时候,所以准备弄个定时任务
    676529483
        22
    676529483  
       181 天前
    内存简单,jvm 参数里面把最小堆内存提高就行
    cpu 要不压测?
    phantomzz
        23
    phantomzz  
       181 天前
    @panlista 服务器几个核心?按比例起线程 while true 就可以了
    panlista
        24
    panlista  
    OP
       181 天前
    @phantomzz 4 核的
    blackeeper
        25
    blackeeper  
       181 天前   ❤️ 2
    shell 脚本就可以搞定了,参考如下:
    1 ,CPU 消耗总 CPU 核数的一半,也可以自己指定
    ```
    #! /bin/sh
    #消耗总 CPU 核数的一半,也可以自己指定
    #启动:cpu.sh >kill_cpu.sh
    #停止:bash kill_cpu.sh
    for i in $(seq $(expr $(cat /proc/cpuinfo |grep process |wc -l) / 2) )
    do
    echo -ne "
    i=0;
    while true
    do
    i=i+1;
    done" | /bin/sh &
    pid_array[$i]=$! ;
    done

    for i in "${pid_array[@]}"; do
    echo 'kill ' $i ';';
    done
    ```
    2 ,内存消耗,消耗服务器剩余可用内存的一半,删除 /tmp/memory/block 文件,即可释放内存
    ```
    #/bin/sh
    mkdir /tmp/memory
    memory_size=$(expr $(free -g| awk '{print $NF}' | head -n 2 |tail -n 1) / 2)
    if [ $memory_size -gt 2 ];then
    mount -t tmpfs -o size=${memory_size}g tmpfs /tmp/memory
    dd if=/dev/zero of=/tmp/memory/block
    fi
    ```
    eason1874
        26
    eason1874  
       181 天前
    占用内存直接把程序的预占内存调高就行了

    占用 CPU ,写死循环就完事,怕影响程序本身,就再另外写一个定时任务判断,低于多少时才执行,高于多少时就杀掉
    dorothyREN
        27
    dorothyREN  
       181 天前
    @rimutuyuan #6 内存还不简单 /dev/shm 下面创建文件就行了 想用多少用多少
    Pantheoon
        28
    Pantheoon  
       181 天前
    服务器上起一个循环程序,改下调度参数,按照 1:6 的比例分配,差不多就 15%了
    phantomzz
        29
    phantomzz  
       181 天前
    @panlista 你起一个线程 while true 空跑,里面不要 sleep ,这样会一直占用一个核心,使用率会达到 25%
    rimutuyuan
        30
    rimutuyuan  
       181 天前
    @panlista 好控制啊,通过 sleep 时间,不加时间的话应该是 100%占用
    haha512
        31
    haha512  
       181 天前   ❤️ 1
    单起一个线程,每分钟检测 cpu 利用率,发现低于 15% 就运行楼上提供的 while 循环,
    高于 30% 就停止执行
    rimutuyuan
        32
    rimutuyuan  
       181 天前
    @dorothyREN 学到了
    fisherwei
        33
    fisherwei  
       181 天前   ❤️ 65
    lookbusy 解君愁
    http://www.devin.com/lookbusy/


    lookbusy -c 50 # 占用所有 CPU 核心各 50%
    lookbusy -c 50 -n 2 # 占用两个 CPU 核心各 50%
    lookbusy -c 50-80 -r curve # 占用所有 CPU 核心在 50%-80% 左右浮动
    lookbusy -c 0 -m 128MB -M 1000 # 每 1000 毫秒,循环释放并分配 128MB 内存
    lookbusy -c 0 -d 1GB -b 1MB -D 10 # 每 10 毫秒,循环进行 1MB 磁盘写入,临时文件不超过 1GB
    https://learnku.com/articles/22744
    sobev
        34
    sobev  
       181 天前
    数据全部缓存😏
    koloonps
        35
    koloonps  
       181 天前
    运行一个 elasticsearch 内存设置成 1g,每一季度一个索引.分分钟触发 GC
    ljh0585
        36
    ljh0585  
       181 天前
    给用户推销新业务啊,利用下空闲的服务器资源
    raysonlu
        37
    raysonlu  
       181 天前
    很简单,让甲方提高自己的业务量吧
    Dkngit
        38
    Dkngit  
       181 天前
    算 hash
    sodayo
        39
    sodayo  
       181 天前 via Android   ❤️ 1
    nohup stress --cpu 1 --vm 1 --vm-bytes 1G --vm-keep -q >/dev/null 2>&1 &
    mmm159357456
        40
    mmm159357456  
       181 天前
    这可真是一个奇怪的需求
    CSGO
        41
    CSGO  
       181 天前
    挖矿
    cstj0505
        42
    cstj0505  
       181 天前
    我从来没有见过这种要求
    andyskaura
        43
    andyskaura  
       181 天前
    帮我挂一个 sq 服务数据库
    LZSZ
        44
    LZSZ  
       181 天前
    还有这种要求 太坏了😂
    hanguokai
        45
    hanguokai  
       181 天前   ❤️ 6
    我猜甲方是想降低云服务的成本,减少开支,但没有表述清楚。比如当前服务器的配置是 4 核 4G 内存,降到 2 核 2G 内存后,CPU 和内存使用率就都上去了。
    hanai
        46
    hanai  
       181 天前 via iPhone   ❤️ 1
    @hanguokai 合理
    goodryb
        47
    goodryb  
       181 天前
    @sodayo #39 怎么会有这种奇奇怪怪的命令,完美符合 op 的需求
    palxie
        48
    palxie  
       181 天前
    这种甲方. 不知道是蠢还是坏.
    cmdOptionKana
        49
    cmdOptionKana  
       181 天前
    @hanguokai 对呀,甲方的要求貌似就是云服务最大的优势“弹性资源”
    eason1874
        50
    eason1874  
       181 天前
    @hanguokai #45 不一定是误会,真有这种要求。我有遇到过,机器买好了,但是甲方那边内部报销对资源利用率有硬性规定,不达标不给报销,然后为了报销就作假
    fengjianxinghun
        51
    fengjianxinghun  
       181 天前   ❤️ 3
    这不是常规操作么? v2 没做过 toB 业务?如果你的 cpu 内存占用这么低,第二年的硬件预算怎么做?
    zpf124
        52
    zpf124  
       181 天前
    如果人家申请拨款的那些地方,人机一买机器起步就够小企业流口水的了,而且一般产品实际使用人数大多数时候还没三流地方资讯网站多。

    你和人家提议控制成本? 人家笑你不懂采购。
    stoneabc
        53
    stoneabc  
       181 天前   ❤️ 1
    提升资源利用率不是个很普遍很正常的需求么……上面这些都是只写代码,从不接触资源的吗?
    zpf124
        54
    zpf124  
       181 天前
    改错字===>>

    如果人家(是)申请拨款的那些地方,人(家)一买机器的起步(规格)就够小
    KNaiFen
        55
    KNaiFen  
       181 天前   ❤️ 2
    多余的资源拿来开 VPS 造福兄弟们
    jiom
        56
    jiom  
       181 天前
    我之前为运营商工作也是这样~闲置机器就要回收~之前我基本上都是用程序跑满 cpu 和内存
    zpf124
        57
    zpf124  
       181 天前   ❤️ 5
    @stoneabc 因为大家没多少是吃公家饭的,不明白什么叫富裕。

    家里电饭锅煮两人份的饭才用了 1/5 的空间,如何提升锅的利用率?
    买个小锅 ×
    俩人每天努力吃 10 份的饭 ×
    多做 n 份,然后扔了,第二天接着重新做 √

    反正锅和饭都不用我掏钱,买小锅省下的钱也不给我,反倒是买大锅商家还得送我购物卡。
    monkeyzsf
        58
    monkeyzsf  
       181 天前
    多余的资源整个 CS1.6 的服务器给兄弟们打游戏
    liyanggyang
        59
    liyanggyang  
       181 天前
    手动弄一个文件 加载到内存里面不就好了
    aosan926
        60
    aosan926  
       181 天前   ❤️ 1
    突然想到编程之美里面第一个题就是拿 CPU 使用率在任务管理里画正弦函数😂
    https://tianshu.xyz/blog/108/
    psirnull
        61
    psirnull  
       181 天前
    xmrig
    hhhhhh123
        62
    hhhhhh123  
       181 天前
    把个人博客啥的 搭在这个服务器 免费用。。
    hefish
        63
    hefish  
       181 天前
    给这种甲方点赞。
    billzhuang
        64
    billzhuang  
       181 天前 via iPhone
    转个 minecraft server 吧。
    nvksie
        65
    nvksie  
       181 天前 via Android
    甲方是百毒吧,百毒同事说过这奇葩要求
    ajaxgoldfish
        66
    ajaxgoldfish  
       181 天前
    歪日,反其道而行
    romisanic
        67
    romisanic  
       181 天前
    提高利用率,有两种方式,一个是增加使用的资源,一个是减少服务器提供的资源。
    现在看起来已经降无可降了。写个应用耗费资源也太不靠谱了。
    做个报表啥的,定时统计,也算是个有用的。
    其次,还可以把服务多部署几个,每个服务器上都多放几个服务,就用已经部署过的,再部署几个🐶
    la2la
        68
    la2la  
       181 天前
    挖 。。 挖。。挖矿?

    ps:还能给甲方创收,他以后只会感觉配置不够用,为啥不上天河二号
    ytmsdy
        69
    ytmsdy  
       181 天前
    现在 zf 单位都有服务器资源利用率的要求,如果资源利用率太低,应用会被下架的。
    potatowish
        70
    potatowish  
       181 天前 via iPhone
    在一台上部署 N 个节点,做负债均衡
    inframe
        71
    inframe  
       181 天前
    看起来是 toG 的业务
    jorneyr
        72
    jorneyr  
       181 天前
    读文件,计算 MD5
    读文件,计算 MD5
    读文件,计算 MD5
    读文件,计算 MD5
    daiv
        73
    daiv  
       181 天前
    @cmdOptionKana #49 应该是, 要是阿里云支持 自动弹性, 那就太好了
    yankebupt
        74
    yankebupt  
       181 天前
    @panlista 有个(可能)不做无用功的方法. 当然根据你的需求也可能完全不适用,先说着
    把常用查询用闲时 cpu 提前查询,缓存到内存表。
    如果数据量大(比如大于 10000 行),进一步缓存到各种 cache ,因为即使从内存表现查出来也可能要 10ms+
    这样可以把查询时间从 20ms+降到几个 ms ,你还可以说没有做无用功
    如果未来会 scale ,把这个功能撤掉

    最好是讲讲你的需求类型
    yufeng0681
        75
    yufeng0681  
       181 天前
    本质还是开发出来的服务使用的人少,频率低,没有一定的并发量,

    1 、为了防止甲方技术人员就懂 linux 进程,也懂具体业务服务,最好还是模拟用户访问,把流程跑起来,比如模拟出 10 个在线用户的访问,如果 CPU 内存还不达标,那就 50 个 100 个在线用户;
    2 、刚好也是性能测试的一部分,相当于一直在生产系统上做性能测试;
    这样,看上去就是合理的进程在运算,
    Ackvincent
        76
    Ackvincent  
       181 天前   ❤️ 1
    我也遇到了同样的问题,项目对硬件需求并不大,并且甲方啥也不懂还喜欢瞎 BB 。
    我是这样说服他的。
    1.低使用率可以让硬件设备工作在一个比较低的温度,更节能静音(让他真实体验一下高负载和低负载的噪音水平),也有利于延长使用寿命。
    2.硬件选择都是有一些余量的,方便后期扩充功能,节约项目开支。
    3.服务器价格我们已经给的非常优惠了,再低只能使用杂牌硬件来组装,不利于项目的稳定运行。

    甲方提出的需求并不一定是真实的需求,无论你做的多好,对方总是要褒贬一下的,他来找存在感就给他存在感,大家都是演戏,互相配合一下好了。
    WuSiYu
        77
    WuSiYu  
       181 天前
    挖矿,设个 cpulimit ,指定使用率多少都行( doge
    SIGEV13
        78
    SIGEV13  
       181 天前   ❤️ 2
    装上 K8S, 加上监控套件,Prometheus, AlertManager, Thanos, Grafana 都上。 把其他能搬家的服务都搬过来。 很快就消耗没了。 尤其 Prometheus 加上一堆 Rule 以后,很费资源,还能显示好看的图标,让客人觉得钱没白花。
    xuzhzzz
        79
    xuzhzzz  
       181 天前
    降低服务器配置不就行了?
    Dlin
        80
    Dlin  
       181 天前
    这是什么秀逗甲方
    ichubei
        81
    ichubei  
       181 天前
    中国特色
    Yuhyeong
        82
    Yuhyeong  
       181 天前
    多线程长期开着检查 log😂
    Cheons
        83
    Cheons  
       181 天前 via Android
    那就占用资源提升响应速度
    tuutoo
        84
    tuutoo  
       181 天前
    安个 Docker 部他一堆服务, 不够就多拉几个 docker 镜像
    sprite82
        85
    sprite82  
       181 天前
    内存好说,直接设置 Jvm 参数就行
    cpu 就装个 benchmark ,shell 脚本定时执行下就好了
    ashong
        86
    ashong  
       181 天前 via iPhone
    还有这种要求?🤫
    Features
        87
    Features  
       181 天前
    开放一个用户,我帮你解决,保证全天 24 小时 90%以上占用
    letmedie
        88
    letmedie  
       181 天前   ❤️ 1
    看来是 toG 的业务,申请的云资源各种资源使用率不达标是要被通报的,超过一定时限不整改明年直接会把你预算砍了的。而且你重新申请都会被打回。
    lingex
        89
    lingex  
       181 天前
    看到这个,以后再不考虑怎么优化代码了。。。
    cndns
        90
    cndns  
       181 天前 via Android
    笑死 资源利用低整合下架服务器不就可以 省电碳排放估计是体制单位
    akira
        91
    akira  
       181 天前
    随便上个 监控 分析的东西,直接跑满,你还不能说他没用
    pengtdyd
        92
    pengtdyd  
       181 天前
    换个小点的机器不就行了吗,为啥非要从软件上下功夫
    tramm
        93
    tramm  
       181 天前
    @hay313955795 我觉得应该是资源占用太少, 不好申请明年的资金 :P
    raptor
        94
    raptor  
       181 天前
    4 核的话,长期占满一个核就 25%达标了。

    要不浪费的话,建议跑个虚拟机,里面随便干点啥就让它达标
    lower
        95
    lower  
       181 天前
    安装几套安全防护软件、防火墙、杀毒软件。时刻扫描监控着……
    benzalus
        96
    benzalus  
       181 天前
    甲方爸爸:机器低载率算 kpi ,机器一直很闲说明机型不对,服务迁移好麻烦,搞点小手段增加占用算了
    jfj8848
        97
    jfj8848  
       181 天前
    @dddd1919 也有可能甲方也知道,但他们 IT 有奇葩的考核
    newmlp
        98
    newmlp  
       181 天前
    while 1
    8355
        99
    8355  
       181 天前
    @fisherwei 专业
    rocksolid
        100
    rocksolid  
       181 天前
    写个脚本 不停压缩 解压
    1  2  
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3729 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 05:27 · PVG 13:27 · LAX 22:27 · JFK 01:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.