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

2022-11-29 16:19:25 +08:00
 panlista

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

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

15529 次点击
所在节点    程序员
149 条回复
panlista
2022-11-29 16:51:36 +08:00
@wu67 要可持续的占用,系统用户少就算再烂的代码也有服务闲置的时候,所以准备弄个定时任务
676529483
2022-11-29 16:52:52 +08:00
内存简单,jvm 参数里面把最小堆内存提高就行
cpu 要不压测?
0NF09LJPS51k57uH
2022-11-29 16:54:07 +08:00
@panlista 服务器几个核心?按比例起线程 while true 就可以了
panlista
2022-11-29 16:55:35 +08:00
@phantomzz 4 核的
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
```
eason1874
2022-11-29 16:56:45 +08:00
占用内存直接把程序的预占内存调高就行了

占用 CPU ,写死循环就完事,怕影响程序本身,就再另外写一个定时任务判断,低于多少时才执行,高于多少时就杀掉
dorothyREN
2022-11-29 16:57:02 +08:00
@rimutuyuan #6 内存还不简单 /dev/shm 下面创建文件就行了 想用多少用多少
Pantheoon
2022-11-29 16:57:15 +08:00
服务器上起一个循环程序,改下调度参数,按照 1:6 的比例分配,差不多就 15%了
0NF09LJPS51k57uH
2022-11-29 16:57:21 +08:00
@panlista 你起一个线程 while true 空跑,里面不要 sleep ,这样会一直占用一个核心,使用率会达到 25%
rimutuyuan
2022-11-29 16:57:49 +08:00
@panlista 好控制啊,通过 sleep 时间,不加时间的话应该是 100%占用
haha512
2022-11-29 16:57:57 +08:00
单起一个线程,每分钟检测 cpu 利用率,发现低于 15% 就运行楼上提供的 while 循环,
高于 30% 就停止执行
rimutuyuan
2022-11-29 16:58:30 +08:00
@dorothyREN 学到了
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
sobev
2022-11-29 17:01:21 +08:00
数据全部缓存😏
koloonps
2022-11-29 17:05:18 +08:00
运行一个 elasticsearch 内存设置成 1g,每一季度一个索引.分分钟触发 GC
ljh0585
2022-11-29 17:05:22 +08:00
给用户推销新业务啊,利用下空闲的服务器资源
raysonlu
2022-11-29 17:05:40 +08:00
很简单,让甲方提高自己的业务量吧
Dkngit
2022-11-29 17:07:40 +08:00
算 hash
sodayo
2022-11-29 17:07:57 +08:00
nohup stress --cpu 1 --vm 1 --vm-bytes 1G --vm-keep -q >/dev/null 2>&1 &
mmm159357456
2022-11-29 17:10:06 +08:00
这可真是一个奇怪的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/898820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX