在服务器运维过程中,有很多公司会对服务器的资源使用率进行监测,发现使用率不高了,会对服务器降配。如果你是乙方,你可以尝试一下这种方法,脚本提升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_listdef 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 asyncioasync 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 ** 3print("总内存" + str(total_memory) + "GB")free_memory = psutil.virtual_memory().free / 1024 ** 3print("可用内存" + 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