V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
huifeng
V2EX  ›  云计算

求思路,如何通过程序调整服务器的 cpu 和内存占用率

  •  
  •   huifeng · 2025 年 5 月 6 日 · 2485 次点击
    这是一个创建于 251 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为有很多服务器负载不足,现在上面要求将服务器 cpu 占用率和内存占用率维持到指定水平,否则要回收,我们不想回收 只能搞个程序丢上去吃 cpu 和内存了,但是服务有高峰低谷,要尽量不影响现有性能,要能快速释放 cpu 和内存;现在弄了个 java 程序丢上去还在测试,读系统 cpu 内存指标去死循环或者分配内存,总感觉有坑,有没有最类似最佳实践。。。

    20 条回复    2025-11-20 10:01:56 +08:00
    totoro625
        1
    totoro625  
       2025 年 5 月 6 日
    github 搜索甲骨文保活脚本,可以设置全局占用比例,高负载自动退出
    huifeng
        2
    huifeng  
    OP
       2025 年 5 月 6 日
    @totoro625 感谢 我去瞅瞅
    szkoda
        3
    szkoda  
       2025 年 5 月 6 日
    长见识了
    opengps
        4
    opengps  
       2025 年 5 月 6 日
    自己写个呗,内存占用很好说,cpu 想要稳定维持有点困难
    Asakijz
        5
    Asakijz  
       2025 年 5 月 6 日
    huifeng
        6
    huifeng  
    OP
       2025 年 5 月 6 日
    看了下网上的保活脚本,貌似不能做到在其他进程内存或者 cpu 占用高的时候及时释放资源
    ysc3839
        7
    ysc3839  
       2025 年 5 月 6 日 via Android
    @opengps CPU 稳定维持的话,把优先级设置成最低就可以了吧?其他程序需要使用 CPU 时,内核会优先调度,理论上影响不大。
    coefu
        8
    coefu  
       2025 年 5 月 6 日
    你这个只能靠 k8s 的 HPA ,自定义一个空消耗的 CRD ,然后写一个自定义控制器,利用 HPA 观察你业务的资源利用率,当你业务资源利用率低的时候,扩容空消耗;当你业务利用率高的时候,回收空消耗。这种,你能完全控制业务+空消耗的总体资源利用率。
    litchinn
        9
    litchinn  
       2025 年 5 月 6 日
    Thread.yield() ?
    ala2008
        10
    ala2008  
       2025 年 5 月 6 日
    丢几个 docker 服务,特别是 java 的,保你资源耗尽
    julyclyde
        11
    julyclyde  
       2025 年 5 月 6 日
    唉,听起来像大企业的剧本

    以前在腾讯就这样,因为分配资源的效率过于低,以至于大家都倾向于多申请、早申请,然后就造成了浪费
    shervy
        12
    shervy  
       2025 年 5 月 6 日
    写一个 PY 或者 shell 脚本,定义磁盘、CPU 、内存达到多少百分比就一直维持这个值,就行了,使用 crontab 定时任务一直运行就行了。简单的很。
    shervy
        13
    shervy  
       2025 年 5 月 6 日
    @shervy #12 再改进一下,动态调整这些值,等你正在运行的其它应用达到你想要的目标峰值时,shell 脚本动态自动调整(资源利用率降下来以满足你实际业务需求,但最终的那个值不会变)
    varzore1
        14
    varzore1  
       2025 年 5 月 6 日
    chaosblade
    thinkwei2012
        15
    thinkwei2012  
       2025 年 5 月 6 日
    1 楼正解,场景一样和你一样,去年用过一段时间。https://github.com/layou233/NeverIdle
    hafuhafu
        16
    hafuhafu  
       2025 年 5 月 6 日
    lookbusy 或者 docker 加上限制 cpu 和内存选项跑死循环之类的东西
    seansong
        17
    seansong  
       2025 年 5 月 6 日
    内存的话,初始化一个大数组?让内存被分配掉就行,然后实时监控一下其他进程的情况,必要的时候进行数组伸缩

    cpu 也是类似的,写一个会占用 cpu 的空转方法,然后读取系统当前状况,计算空转多少就好了
    guo4224
        18
    guo4224  
       2025 年 5 月 7 日 via iPhone
    按 17 楼说的,实时读系统状态动态调整。
    xiaotianhu
        19
    xiaotianhu  
       2025 年 5 月 7 日
    感觉编程之美上有一道类似的题啊。控制 CPU 使用率,只不过没法自动调节
    huifeng
        20
    huifeng  
    OP
       2025 年 11 月 20 日
    这个窝已经做完了 大致思路就是监测 cpu 内存使用率,cpu 就是起多个线程(目前根据 cpu 数量-1 )开死循环 n 秒,再 sleep ,调整死循环和 sleep 的数量, 内存就是分配数数组了,但是内存这里碰到个坑,jvm gc 后不主动释放内存给系统,后面用堆外内存解决了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
    ♥ Do have faith in what you're doing.