目前的方案是,单独写一个服务做一些无用功去消耗一部分系统资源,有什么好的方法吗。 基于 springboot
服务器配置已经是最低了不能再降了
![]() | 1 panlista OP 用 java 怎么去持续的消耗一部分 cpu 和内存呢,可以提供一下思路吗 |
2 14v45mJPBYJW8dT7 2022-11-29 16:22:02 +08:00 目前的方案很好,甲方让你怎么做,做好拿到钱就行了 |
![]() | 3 dolphintwo 2022-11-29 16:22:11 +08:00 ![]() 搭 k8s ,再上 grafana ,elk ,加收服务费 |
4 zepto 2022-11-29 16:22:26 +08:00 ![]() 计算 pai |
![]() | 5 wu67 2022-11-29 16:22:49 +08:00 把代码写好很难, 但是把代码写烂还不简单吗? 循环、递归给他满上, 要不就不用 jdk 的排序, 自己手写排序. |
6 14v45mJPBYJW8dT7 2022-11-29 16:22:59 +08:00 ![]() cpu:模拟挖矿,循环进行 sha256 操作 内存:创建并维护一个 1000W 长度的数组 |
![]() | 7 cnrting 2022-11-29 16:23:45 +08:00 while 1 |
![]() | 8 hay0577 2022-11-29 16:24:21 +08:00 ![]() 甲方是觉得服务器资源占用太少,性价比太低吗? |
9 bthulu 2022-11-29 16:24:31 +08:00 简单, 下面这个代码就能跑满一个 cpu. 想跑满几个 CPU, 就开几个线程跑这个方法就行了. ``` int i = 0; while(true) { if (i == Integer.Max) { i = 0; } i++; } ``` |
![]() | 10 xuelu520 2022-11-29 16:25:51 +08:00 给一个大数组排序,排序 N 次 |
11 Leviathann 2022-11-29 16:27:48 +08:00 ![]() 看笑了 |
12 dcsuibian 2022-11-29 16:28:49 +08:00 这种甲方真是呵呵了 |
![]() | 13 rb6221 2022-11-29 16:28:54 +08:00 ![]() 挖矿吧,还能赚钱 |
14 Twan 2022-11-29 16:29:41 +08:00 void fun_c() { for(;;){ ++i; float = 10000 % 1000; } //CPU char * ptr = new char[ 10 * 1024 * 1024]; delete ptr; } create_thread(_thread_id, fun_c, ....); 客户: 真棒 一个月后客户: 我们需要加钱优化: 你: 没问题,打钱 |
![]() | 15 dreasky 2022-11-29 16:30:58 +08:00 哪来这么好的甲方 |
16 shazi199 2022-11-29 16:38:23 +08:00 估计是军政机关或者学校项目 |
![]() | 17 winglight2016 2022-11-29 16:39:56 +08:00 最简单的不就是在服务器上跑个压测吗?控制好并发数量,用户看着 DAU 蹭蹭往上涨还不开心死了? |
![]() | 18 nomagick 2022-11-29 16:45:08 +08:00 服务器啥配置我听听 |
19 dddd1919 2022-11-29 16:49:01 +08:00 ![]() 应该跟甲方解释一下,不是什么数都是越大越好 |
![]() | 20 panlista OP /div> @rimutuyuan 感觉不好控制啊,比如目前 cpu 利用率才 0.51%,达标需要 15%,怎么能保证系统稳定的情况下再多占用 15%左右的 cpu 呢 |
![]() | 22 676529483 2022-11-29 16:52:52 +08:00 内存简单,jvm 参数里面把最小堆内存提高就行 cpu 要不压测? |
23 0NF09LJPS51k57uH 2022-11-29 16:54:07 +08:00 @panlista 服务器几个核心?按比例起线程 while true 就可以了 |
![]() | 25 blackeeper 2022-11-29 16:56:20 +08:00 ![]() 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 ``` |
![]() | 26 eason1874 2022-11-29 16:56:45 +08:00 占用内存直接把程序的预占内存调高就行了 占用 CPU ,写死循环就完事,怕影响程序本身,就再另外写一个定时任务判断,低于多少时才执行,高于多少时就杀掉 |
27 dorothyREN 2022-11-29 16:57:02 +08:00 @rimutuyuan #6 内存还不简单 /dev/shm 下面创建文件就行了 想用多少用多少 |
28 Pantheoon 2022-11-29 16:57:15 +08:00 服务器上起一个循环程序,改下调度参数,按照 1:6 的比例分配,差不多就 15%了 |
29 0NF09LJPS51k57uH 2022-11-29 16:57:21 +08:00 @panlista 你起一个线程 while true 空跑,里面不要 sleep ,这样会一直占用一个核心,使用率会达到 25% |
30 14v45mJPBYJW8dT7 2022-11-29 16:57:49 +08:00 @panlista 好控制啊,通过 sleep 时间,不加时间的话应该是 100%占用 |
31 haha512 2022-11-29 16:57:57 +08:00 ![]() 单起一个线程,每分钟检测 cpu 利用率,发现低于 15% 就运行楼上提供的 while 循环, 高于 30% 就停止执行 |
32 14v45mJPBYJW8dT7 2022-11-29 16:58:30 +08:00 @dorothyREN 学到了 |
33 fisherwei 2022-11-29 17:00:00 +08:00 ![]() 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 |
![]() | 34 sobev 2022-11-29 17:01:21 +08:00 数据全部缓存 |
35 koloonps 2022-11-29 17:05:18 +08:00 运行一个 elasticsearch 内存设置成 1g,每一季度一个索引.分分钟触发 GC |
![]() | 36 ljh0585 2022-11-29 17:05:22 +08:00 给用户推销新业务啊,利用下空闲的服务器资源 |
37 raysonlu 2022-11-29 17:05:40 +08:00 很简单,让甲方提高自己的业务量吧 |
![]() | 38 Dkngit 2022-11-29 17:07:40 +08:00 算 hash |
39 sodayo 2022-11-29 17:07:57 +08:00 via Android ![]() nohup stress --cpu 1 --vm 1 --vm-bytes 1G --vm-keep -q >/dev/null 2>&1 & |
40 mmm159357456 2022-11-29 17:10:06 +08:00 这可真是一个奇怪的需求 |
![]() | 41 CSGO 2022-11-29 17:13:09 +0800 挖矿 |
42 cstj0505 2022-11-29 17:13:56 +08:00 我从来没有见过这种要求 |
![]() | 43 andyskaura 2022-11-29 17:15:50 +08:00 帮我挂一个 sq 服务数据库 |
44 LZSZ 2022-11-29 17:20:17 +08:00 还有这种要求 太坏了 |
![]() | 45 hanguokai 2022-11-29 17:20:44 +08:00 ![]() 我猜甲方是想降低云服务的成本,减少开支,但没有表述清楚。比如当前服务器的配置是 4 核 4G 内存,降到 2 核 2G 内存后,CPU 和内存使用率就都上去了。 |
48 palxie 2022-11-29 17:28:27 +08:00 这种甲方. 不知道是蠢还是坏. |
![]() | 49 cmdOptionKana 2022-11-29 17:31:11 +08:00 @hanguokai 对呀,甲方的要求貌似就是云服务最大的优势“弹性资源” |
![]() | 50 eason1874 2022-11-29 17:31:33 +08:00 @hanguokai #45 不一定是误会,真有这种要求。我有遇到过,机器买好了,但是甲方那边内部报销对资源利用率有硬性规定,不达标不给报销,然后为了报销就作假 |
51 fengjianxinghun 2022-11-29 17:32:24 +08:00 ![]() 这不是常规操作么? v2 没做过 toB 业务?如果你的 cpu 内存占用这么低,第二年的硬件预算怎么做? |
![]() | 52 zpf124 2022-11-29 17:41:13 +08:00 如果人家申请拨款的那些地方,人机一买机器起步就够小企业流口水的了,而且一般产品实际使用人数大多数时候还没三流地方资讯网站多。 你和人家提议控制成本? 人家笑你不懂采购。 |
53 stoneabc 2022-11-29 17:41:28 +08:00 ![]() 提升资源利用率不是个很普遍很正常的需求么……上面这些都是只写代码,从不接触资源的吗? |
![]() | 54 zpf124 2022-11-29 17:42:48 +08:00 改错字===>> 如果人家(是)申请拨款的那些地方,人(家)一买机器的起步(规格)就够小 |
55 KNaiFen 2022-11-29 17:46:51 +08:00 ![]() 多余的资源拿来开 VPS 造福兄弟们 |
56 jiom 2022-11-29 17:49:16 +08:00 我之前为运营商工作也是这样~闲置机器就要回收~之前我基本上都是用程序跑满 cpu 和内存 |
![]() | 57 zpf124 2022-11-29 17:50:56 +08:00 ![]() @stoneabc 因为大家没多少是吃公家饭的,不明白什么叫富裕。 家里电饭锅煮两人份的饭才用了 1/5 的空间,如何提升锅的利用率? 买个小锅 × 俩人每天努力吃 10 份的饭 × 多做 n 份,然后扔了,第二天接着重新做 √ 反正锅和饭都不用我掏钱,买小锅省下的钱也不给我,反倒是买大锅商家还得送我购物卡。 |
58 monkeyzsf 2022-11-29 17:51:55 +08:00 多余的资源整个 CS1.6 的服务器给兄弟们打游戏 |
![]() | 59 liyanggyang 2022-11-29 17:53:29 +08:00 手动弄一个文件 加载到内存里面不就好了 |
![]() | 60 aosan926 2022-11-29 17:54:35 +08:00 ![]() 突然想到编程之美里面第一个题就是拿 CPU 使用率在任务管理里画正弦函数 https://tianshu.xyz/blog/108/ |
![]() | 61 psirnull 2022-11-29 17:54:56 +08:00 xmrig |
62 hhhhhh123 2022-11-29 18:00:52 +08:00 把个人博客啥的 搭在这个服务器 免费用。。 |
63 hefish 2022-11-29 18:12:08 +08:00 给这种甲方点赞。 |
![]() | 64 billzhuang 2022-11-29 18:38:28 +08:00 via iPhone 转个 minecraft server 吧。 |
![]() | 65 nvksie 2022-11-29 19:07:05 +08:00 via Android 甲方是百毒吧,百毒同事说过这奇葩要求 |
![]() | 66 ih8es9OIzne0959p 2022-11-29 19:22:27 +08:00 歪日,反其道而行 |
![]() | 67 romisanic 2022-11-29 19:32:44 +08:00 提高利用率,有两种方式,一个是增加使用的资源,一个是减少服务器提供的资源。 现在看起来已经降无可降了。写个应用耗费资源也太不靠谱了。 做个报表啥的,定时统计,也算是个有用的。 其次,还可以把服务多部署几个,每个服务器上都多放几个服务,就用已经部署过的,再部署几个 |
![]() | 68 la2la 2022-11-29 20:13:41 +08:00 挖 。。 挖。。挖矿? ps:还能给甲方创收,他以后只会感觉配置不够用,为啥不上天河二号 |
![]() | 69 ytmsdy 2022-11-29 20:15:48 +08:00 现在 zf 单位都有服务器资源利用率的要求,如果资源利用率太低,应用会被下架的。 |
![]() | 70 potatowish 2022-11-29 20:48:05 +08:00 via iPhone 在一台上部署 N 个节点,做负债均衡 |
![]() | 71 inframe 2022-11-29 20:58:58 +08:00 看起来是 toG 的业务 |
72 jorneyr 2022-11-29 21:20:23 +08:00 读文件,计算 MD5 读文件,计算 MD5 读文件,计算 MD5 读文件,计算 MD5 |
![]() | 73 daiv 2022-11-29 21:58:04 +08:00 @cmdOptionKana #49 应该是, 要是阿里云支持 自动弹性, 那就太好了 |
![]() | 74 yankebupt 2022-11-29 21:58:43 +08:00 @panlista 有个(可能)不做无用功的方法. 当然根据你的需求也可能完全不适用,先说着 把常用查询用闲时 cpu 提前查询,缓存到内存表。 如果数据量大(比如大于 10000 行),进一步缓存到各种 cache ,因为即使从内存表现查出来也可能要 10ms+ 这样可以把查询时间从 20ms+降到几个 ms ,你还可以说没有做无用功 如果未来会 scale ,把这个功能撤掉 最好是讲讲你的需求类型 |
![]() | 75 yufeng0681 2022-11-29 22:01:45 +08:00 本质还是开发出来的服务使用的人少,频率低,没有一定的并发量, 1 、为了防止甲方技术人员就懂 linux 进程,也懂具体业务服务,最好还是模拟用户访问,把流程跑起来,比如模拟出 10 个在线用户的访问,如果 CPU 内存还不达标,那就 50 个 100 个在线用户; 2 、刚好也是性能测试的一部分,相当于一直在生产系统上做性能测试; 这样,看上去就是合理的进程在运算, |
76 Ackvincent 2022-11-29 22:15:24 +08:00 ![]() 我也遇到了同样的问题,项目对硬件需求并不大,并且甲方啥也不懂还喜欢瞎 BB 。 我是这样说服他的。 1.低使用率可以让硬件设备工作在一个比较低的温度,更节能静音(让他真实体验一下高负载和低负载的噪音水平),也有利于延长使用寿命。 2.硬件选择都是有一些余量的,方便后期扩充功能,节约项目开支。 3.服务器价格我们已经给的非常优惠了,再低只能使用杂牌硬件来组装,不利于项目的稳定运行。 甲方提出的需求并不一定是真实的需求,无论你做的多好,对方总是要褒贬一下的,他来找存在感就给他存在感,大家都是演戏,互相配合一下好了。 |
![]() | 77 WuSiYu 2022-11-29 22:41:50 +08:00 挖矿,设个 cpulimit ,指定使用率多少都行( doge |
78 SIGEV13 2022-11-29 22:54:02 +08:00 ![]() 装上 K8S, 加上监控套件,Prometheus, AlertManager, Thanos, Grafana 都上。 把其他能搬家的服务都搬过来。 很快就消耗没了。 尤其 Prometheus 加上一堆 Rule 以后,很费资源,还能显示好看的图标,让客人觉得钱没白花。 |
![]() | 79 xuzhzzz 2022-11-29 23:01:04 +08:00 降低服务器配置不就行了? |
![]() | 80 Dlin 2022-11-29 23:06:14 +08:00 这是什么秀逗甲方 |
![]() | 81 ichubei 2022-11-29 23:30:59 +08:00 中国特色 |
82 Yuhyeong 2022-11-29 23:48:29 +08:00 多线程长期开着检查 log |
![]() | 83 Cheons 2022-11-29 23:57:40 +08:00 via Android 那就占用资源提升响应速度 |
![]() | 84 tuutoo 2022-11-30 00:04:31 +08:00 安个 Docker 部他一堆服务, 不够就多拉几个 docker 镜像 |
![]() | 85 sprite82 2022-11-30 00:05:50 +08:00 内存好说,直接设置 Jvm 参数就行 cpu 就装个 benchmark ,shell 脚本定时执行下就好了 |
![]() | 86 ashong 2022-11-30 00:10:00 +08:00 via iPhone 还有这种要求? |
![]() | 87 Features 2022-11-30 00:16:08 +08:00 开放一个用户,我帮你解决,保证全天 24 小时 90%以上占用 |
88 letmedie 2022-11-30 00:19:49 +08:00 ![]() 看来是 toG 的业务,申请的云资源各种资源使用率不达标是要被通报的,超过一定时限不整改明年直接会把你预算砍了的。而且你重新申请都会被打回。 |
![]() | 89 lingex 2022-11-30 00:20:10 +08:00 看到这个,以后再不考虑怎么优化代码了。。。 |
90 cndns 2022-11-30 00:24:55 +08:00 via Android 笑死 资源利用低整合下架服务器不就可以 省电碳排放估计是体制单位 |
![]() | 91 akira 2022-11-30 01:35:28 +08:00 随便上个 监控 分析的东西,直接跑满,你还不能说他没用 |
![]() | 92 pengtdyd 2022-11-30 06:14:44 +08:00 换个小点的机器不就行了吗,为啥非要从软件上下功夫 |
![]() | 93 tramm 2022-11-30 08:10:45 +08:00 @hay313955795 我觉得应该是资源占用太少, 不好申请明年的资金 :P |
![]() | 94 raptor 2022-11-30 09:22:05 +08:00 4 核的话,长期占满一个核就 25%达标了。 要不浪费的话,建议跑个虚拟机,里面随便干点啥就让它达标 |
![]() | 95 lower 2022-11-30 09:29:10 +08:00 安装几套安全防护软件、防火墙、杀毒软件。时刻扫描监控着…… |
96 benzalus 2022-11-30 09:31:44 +08:00 甲方爸爸:机器低载率算 kpi ,机器一直很闲说明机型不对,服务迁移好麻烦,搞点小手段增加占用算了 |
![]() | 98 newmlp 2022-11-30 09:38:30 +08:00 while 1 |
100 rocksolid 2022-11-30 09:51:54 +08:00 写个脚本 不停压缩 解压 |