网站建设首选九零后网络,python基础教程pdf第三版,公司网络维护服务,重庆网站建设红旗河沟背景
在服务器上部署了一套目标检测的程序#xff0c;做成while true 的轮询检测数据更新的定时任务。
结果没想到那台服务器还有一套可视化程序要给领导演示看#xff0c;结果演示的时候平台各种报错。 然后通过top查看了一下资源利用率发现python的程序cpu 130。#xf…背景
在服务器上部署了一套目标检测的程序做成while true 的轮询检测数据更新的定时任务。
结果没想到那台服务器还有一套可视化程序要给领导演示看结果演示的时候平台各种报错。 然后通过top查看了一下资源利用率发现python的程序cpu 130。其他机器上我看都是100 这个服务器不知道为啥是130左右超频么
所以寻思给程序加个资源占用的限制跑慢一点没关系。思路为代码中加限制或者操作系统层面加限制。 代码中设置适用于需要更细粒度的控制并且不依赖于操作系统特性的情况。 服务器上设置则更适合于生产环境因为它利用了操作系统提供的资源管理工具更加灵活和强大。
记录一下解决方案。各位可测试使用。
一 限制cpu使用
1.使用os.nice()函数来调整进程的优先级。例如将优先级设置为较低的值可以降低进程的CPU占用率
import os
os.nice(10) # 将优先级设置为10范围是-20到19默认为02.使用psutil库来监控和限制CPU使用率。
import psutil
import timep psutil.Process()
while True:cpu_usage p.cpu_percent(interval1)if cpu_usage 50: # 如果CPU使用率超过50%time.sleep(1) # 暂停1秒二 限制内存使用
使用resource模块来限制内存使用。
import resourcedef limit_memory(maxsize):soft, hard resource.getrlimit(resource.RLIMIT_AS)resource.setrlimit(resource.RLIMIT_AS, (maxsize, hard))limit_memory(500 * 1024 * 1024) # 限制最大内存使用为500MB三 在服务器上设置
使用cgroups:
cgroups控制组是一种Linux内核功能用于限制、记录和隔离进程组的资源使用如CPU、内存、磁盘I/O等。 创建一个新的cgroup并设置资源限制。
sudo cgcreate -g memory,cpu:mygroup
echo 500M | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
echo 50 | sudo tee /sys/fs/cgroup/cpu/mygroup/cpu.shares将你的Python进程添加到这个cgroup中。
sudo cgclassify -g memory,cpu:mygroup piddocker 容器限制
docker run --memory500m --cpus0.5 my_python_app使用systemd服务文件:
如果你的Python程序是通过systemd管理的可以在服务文件中设置资源限制。
[Service]
ExecStart/usr/bin/python3 /path/to/your_script.py
MemoryLimit500M
CPUQuota50%