在服务器运维过程中,有很多公司会对服务器的资源使用率进行监测,发现使用率不高了,会对服务器降配。如果你是乙方,你可以尝试一下这种方法,脚本提升cpu与内存的使用率。如果你需要对服务器性能或者服务稳定性进行测试,也可以使用这种方法。
CPU使用率提升
现在的cpu性能都很高,普通的正弦余弦函数,没有作用。最好使用斐波那契数列,同时充分提供多核进行计算。
import multiprocessing
def fibonacci(n):
"""
计算第n个斐波那契数列
"""
if n <= 0:
return []
elif n == 1:
return [0]
elif n == 2:
return [0, 1]
else:
fib_list = [0, 1]
while len(fib_list) < n:
new_num = fib_list[-1] + fib_list[-2]
fib_list.append(new_num)
return fib_list
def worker(num):
"""
一个简单的工作函数,这里可以替换为你的计算密集型任务
"""
print(f"Worker {num} is running")
# 模拟工作
for i in range(20000):
array=fibonacci(8000)
array2=fibonacci(4000)
print(len(array), end="")
print(len(array2))
def improve_cpu():
# 获取CPU核心数
num_cpus = multiprocessing.cpu_count()
print(f"Using {num_cpus} CPUs")
# 创建进程池
pool = multiprocessing.Pool(processes=num_cpus)
# 向进程池提交任务
for i in range(num_cpus):
pool.apply_async(worker, args=(i,))
# 关闭进程池并等待所有任务完成
pool.close()
pool.join()
print("CPU测试完成")
if __name__ == "__main__":
improve_cpu()
内存使用率提升
内存使用率提升,可以通过构建大的bytearray
来实现。
注意,
- 防止变量被回收
- 不要使用
time.sleep
来持续时间,占用内存会不生效 - 尽量不要百分百占用,会影响系统的其他业务
import psutil
import asyncio
async def wait_for_a_minute():
print("开始等待2分钟....")
await asyncio.sleep(120)
print("已经等待了2分钟。")
return "Done"
def improve_memory():
total_memory = psutil.virtual_memory().total / 1024 ** 3
print("总内存" + str(total_memory) + "GB")
free_memory = psutil.virtual_memory().free / 1024 ** 3
print("可用内存" + str(free_memory) + "GB")
# 使用剩余内存60%
use_size = int(psutil.virtual_memory().free * 6 / 10)
print("预计使用" + str(use_size / 1024 ** 3) + "GB")
print("开始内存测试")
memory = bytearray(use_size)
asyncio.run(wait_for_a_minute())
print(len(memory))
print("内存测试完成")
if __name__ == "__main__":
improve_memory()
编译部署
- 开发的脚本,可以通过pyinstaller编译为可执行文件。
pyinstaller --onefile main.py
注意,在windows上会被编译会exe,在centos会直接编译为可以执行文件。
- 在centos上执行的话,需要使用下面命令,对文件进行授权。
chmod 777 main
- 可以与定时任务结合,定时提升服务器的使用率。
编译结果与源码下载地址https://download.csdn.net/download/GISuuser/89533686