Docker部署Airflow环境下为Worker分配更多内存的方法咨询
为Docker部署的Airflow Worker分配更多内存的方法
针对docker-compose部署场景
- 打开你的
docker-compose.yml文件,找到worker服务的配置段,添加内存限制参数:
其中services: worker: # 原有镜像、环境变量等配置 mem_limit: 8g mem_reservation: 6gmem_limit是Worker容器能使用的最大内存,mem_reservation是系统优先分配给容器的内存软限制,可根据实际需求调整数值(比如4g、16g)。 - 修改完成后,重启Worker服务生效:
如果是用Airflow官方的docker-compose up -d --force-recreate workerairflow docker命令启动的环境,先导出配置文件:
再修改上述参数后重启。airflow docker compose config > docker-compose.yml
直接启动Worker容器的场景
如果是单独启动Worker容器,可在启动命令中直接指定内存参数:
docker run -d --name airflow-worker --memory 8g --memory-reservation 6g 你的AirflowWorker镜像名
使用KubernetesExecutor的场景
- 全局配置:修改Airflow的
airflow.cfg文件,找到kubernetes_executor模块,设置Worker的内存请求和限制:[kubernetes_executor] worker_memory_request = 6Gi worker_memory_limit = 8Gi - 单Task配置:如果只想给OCR任务单独分配更多内存,可在DAG的Task中添加
executor_config:from airflow.operators.python import PythonOperator def ocr_task_func(): # 你的EasyOCR逻辑 pass ocr_task = PythonOperator( task_id="run_easyocr", python_callable=ocr_task_func, executor_config={ "KubernetesExecutor": { "request_memory": "6Gi", "limit_memory": "8Gi" } } )
额外优化建议
- 优化EasyOCR代码:只加载需要识别的语言模型,减少内存占用,比如:
import easyocr reader = easyocr.Reader(['ch_sim', 'en']) # 仅加载中英文模型 - Task执行完成后手动释放资源:
del reader import gc gc.collect()
内容的提问来源于stack exchange,提问作者rahes
相关产品推荐
相关产品推荐

