Server 当我只运行一个Odoo实例时,为什么我的服务器非常慢?

Server 当我只运行一个Odoo实例时,为什么我的服务器非常慢?,server,hardware,odoo,devops,Server,Hardware,Odoo,Devops,我的服务器配置了32核处理器,但当我仅运行odoo实例时,该实例仅使用一个核心,其余的所有31个核心都是理想的…因此服务器过载…缓慢原因 首先,您需要检查为什么奥多工作缓慢。有几个可能的原因。其中一些: 未正确设置Odoo配置。 某些特定任务由于编程错误而速度较慢。检查后台的自动任务是否占用了所有资源 系统资源不够。通常情况下,SSD是一个好主意,因为事务处理速度将提高10倍 Odoo配置-内存和工作进程 您可以在Odoo配置文件上设置以下属性: 内存选项: --osv-memory-cou

我的服务器配置了32核处理器,但当我仅运行odoo实例时,该实例仅使用一个核心,其余的所有31个核心都是理想的…因此服务器过载…

缓慢原因 首先,您需要检查为什么奥多工作缓慢。有几个可能的原因。其中一些:

  • 未正确设置Odoo配置。
  • 某些特定任务由于编程错误而速度较慢。检查后台的自动任务是否占用了所有资源
  • 系统资源不够。通常情况下,SSD是一个好主意,因为事务处理速度将提高10倍
Odoo配置-内存和工作进程 您可以在Odoo配置文件上设置以下属性:

内存选项:

--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个并发用户
尽管我在奥多论坛或其他地方读到了这篇文章:

每个可用CPU使用2个工作线程+1个cron线程,每10个并发用户使用1个CPU。确保调整内存限制和cpu限制。 我建议密切监视服务器资源(CPU、内存、网络等),以便进一步调整参数

内存大小计算

我们认为20%的请求是重请求,而80%是简单的请求。 一个繁重的工作,当所有的计算字段都设计好了,SQL请求都设计好了。。。估计将消耗大约1Go的RAM

在相同的场景中,较轻的工作线程估计会消耗大约150MB的RAM

Needed 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)或更高,否则,您可能会遇到类似流程的样式问题,这会消耗内存。干杯