Server 当我只运行一个Odoo实例时,为什么我的服务器非常慢?
我的服务器配置了32核处理器,但当我仅运行odoo实例时,该实例仅使用一个核心,其余的所有31个核心都是理想的…因此服务器过载…缓慢原因 首先,您需要检查为什么奥多工作缓慢。有几个可能的原因。其中一些:Server 当我只运行一个Odoo实例时,为什么我的服务器非常慢?,server,hardware,odoo,devops,Server,Hardware,Odoo,Devops,我的服务器配置了32核处理器,但当我仅运行odoo实例时,该实例仅使用一个核心,其余的所有31个核心都是理想的…因此服务器过载…缓慢原因 首先,您需要检查为什么奥多工作缓慢。有几个可能的原因。其中一些: 未正确设置Odoo配置。 某些特定任务由于编程错误而速度较慢。检查后台的自动任务是否占用了所有资源 系统资源不够。通常情况下,SSD是一个好主意,因为事务处理速度将提高10倍 Odoo配置-内存和工作进程 您可以在Odoo配置文件上设置以下属性: 内存选项: --osv-memory-cou
- 未正确设置Odoo配置。
- 某些特定任务由于编程错误而速度较慢。检查后台的自动任务是否占用了所有资源
- 系统资源不够。通常情况下,SSD是一个好主意,因为事务处理速度将提高10倍
--osv-memory-count-limit=OSV_MEMORY_COUNT_LIMIT
Force a limit on the maximum number of records kept in
the virtual osv_memory tables. The default is False,
which means no count-based limit.
--osv-memory-age-limit=OSV_MEMORY_AGE_LIMIT
Force a limit on the maximum age of records kept in
the virtual osv_memory tables. This is a decimal value
expressed in hours, and the default is 1 hour.
--max-cron-threads=MAX_CRON_THREADS
Maximum number of threads processing concurrently cron
jobs (default 2).
多处理选项:
--workers=WORKERS Specify the number of workers, 0 disable prefork mode.
--limit-memory-soft=LIMIT_MEMORY_SOFT
Maximum allowed virtual memory per worker, when
reached the worker be reset after the current request
(default 671088640 aka 640MB).
NOTA: if this size of memory is reached, a SIGINT signal is sent to Odoo to finish the process in a correct way
--limit-memory-hard=LIMIT_MEMORY_HARD
Maximum allowed virtual memory per worker, when
reached, any memory allocation will fail (default
805306368 aka 768MB).
NOTA: if this size of memory is reached, a SIGKILL signal is sent to Odoo to finish the process in a abrupt way
--limit-request=LIMIT_REQUEST
Maximum number of request to be processed per worker
(default 8192).
工人。--workers
的非零值激活多处理。多处理增加了稳定性,更好地利用了计算资源,可以更好地监控和限制资源
工人数量计算:
- 经验法则:(#CPU*2)+1
- Cron工作者需要CPU
- 1个工作者~=6个并发用户
我们认为20%的请求是重请求,而80%是简单的请求。 一个繁重的工作,当所有的计算字段都设计好了,SQL请求都设计好了。。。估计将消耗大约1Go的RAM
在相同的场景中,较轻的工作线程估计会消耗大约150MB的RAMNeeded RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
PostgreSQL内存
将共享_缓冲区设置为可用内存的20%,将有效_缓存_大小设置为可用内存的50%。在配置文件中更改以下参数:
shared_buffers = 3072MB
effective_cache_size = 8192MB
它不时被推荐到数据库中
例子
如果您有一个具有8个CPU核和16 GB RAM的VPS,工作进程数应为17(CPU核*2+1),总限制内存软值将为640 x 17=10880 MB,总限制内存硬768MB x 17=13056 MB,因此Odoo将使用最大12.75 GB RAM
workers = 17
limit_memory_hard = 805306368 # total >> 13690208256
limit_memory_soft = 671088640 # total >> 11408506880
limit_request = 8192
limit_time_cpu = 60
limit_time_real = 120
max_cron_threads = 2
工具书类
--workers运行Odoo
>0。请参阅,以了解基于可用CPU数量的推荐工作人员数量。这对我来说也是一个问题,如果您发现问题,请发布解决方案one@manishankarI已经写了@Naglis指出的信息,我在我的回答中添加了更多的澄清。你可能想检查一下你的硬/软内存限制声明,因为它将允许每个工作进程在杀死它之前一直向上到内存软/硬。如果允许17名工人使用12.75 GB,您的机器很可能会耗尽资源。“对虚拟内存进行硬限制,任何超过限制的工作线程都将立即被杀死,而无需等待当前请求处理的结束。”->你说得对@Ark74,我已经划分了total/17
一旦澄清,你可能希望坚持默认的2048MB(对于Odoo 10)或更高,否则,您可能会遇到类似流程的样式问题,这会消耗内存。干杯