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

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

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

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

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

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

    cpu 也是类似的,写一个会占用 cpu 的空转方法,然后读取系统当前状况,计算空转多少就好了
    guo4224
        18
    guo4224  
       134 天前 via iPhone
    按 17 楼说的,实时读系统状态动态调整。
    xiaotianhu
        19
    xiaotianhu  
       134 天前
    感觉编程之美上有一道类似的题啊。控制 CPU 使用率,只不过没法自动调节
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:35 · PVG 02:35 · LAX 11:35 · JFK 14:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.