Odoo14 limit_memory软硬阈值等运行参数计算与配置相关问题
Odoo内存限制逻辑及参数取值解答
问题1:并发用户数统计范围
Odoo官方文档提到的并发用户数包含所有发起访问请求的用户,不管是未登录的网站访客、电商浏览用户,还是后台登录的业务用户,所有请求都会占用worker进程资源,统计并发量级时需要把所有端的访问会话都纳入计算。
问题2:核心运行参数取值规则
首先你看到的第三方提到的计算方式存在错误,它混淆了单worker内存和总内存配额,按它的公式计算出的10G、13G内存需求完全不符合你2G的资源配额,不要参考该取值。
以下是各参数的定义和适配你2 vCPU、2G内存场景的取值逻辑:
- limit_memory_soft:单worker进程软内存限制,worker占用内存超过该值时,处理完当前请求后会被自动销毁释放内存。
计算逻辑:按你分配的总内存预留20%~30%给系统缓冲后,平摊到每个worker即可。你的场景总共有4个业务worker+1个定时worker,预留500M系统内存后,单worker软限设为314572800(300M)即可,总峰值内存占用控制在1.5G内,不会超出配额。 - limit_memory_hard:单worker进程硬内存限制,一旦占用超过该值会立刻杀死进程,避免进程内存泄漏导致整机OOM。通常比软限高20%~30%,你的场景设为
419430400(400M)即可。 - limit_request:单个worker处理多少个请求后自动重启,用于避免长期运行的worker积累内存泄漏。常规场景取值800~1200即可,你的场景建议设为
1000。 - limit_time_cpu:单个请求允许占用的CPU最大时长,单位为秒。普通业务操作场景设为
60即可,如果有大量批量导入、复杂报表计算的需求,可以调整到120。 - limit_time_real:单个请求的实际总处理时长(包含IO等待、数据库查询等待时间),需要比CPU限制更长,普通场景设为
120即可,有大任务需求可以调整到300,如果前端配置了反向代理,需要同步调整代理的超时阈值。
适配你场景的最终配置参考
workers = 4 max_cron_threads = 1 limit_memory_soft = 314572800 limit_memory_hard = 419430400 limit_request = 1000 limit_time_cpu = 60 limit_time_real = 120
该配置可以支撑30~50个同时活跃的访问会话(包含未登录访客),如果你的站点访客量级更高,建议额外配置Redis缓存静态页面、静态资源走CDN,降低worker的资源占用。
内容的提问来源于stack exchange,提问作者M4kn4sh
相关产品推荐
相关产品推荐

