Odoo является наиболее популярным ERP программным обеспечением (Enterprise Resource Planning), написанный на Python и использующей PostgreSQL в качестве базы данных бэк-энда. Community Edition Odoo является свободным и с открытым исходным кодом, который включает в себя управление проектами, производства, бухгалтерии, выставления счетов и продаж, управление складом, человеческие ресурсы и многое другое. Есть около 30 основных модулей и более 3000 дополнительных модулей. Odoo представляет собой сложное программное обеспечение, и развертывание ряда модулей, имеющих большой объем данных внутри базы данных и т.д. может вызвать снижение производительности. Два основных узких места Odoo, это доступа к диску и время запроса к базе данных.
Для повышения производительности экземпляра Odoo, убедитесь в использовании:
- Быстрых дисков для хранения (предпочтительно SSD)
- Linux VPS с большим количеством оперативной памяти.
- Активирование режима многопроцессорности в Odoo.
- Настроить и оптимизировать правильно службу PostgreSQL.
SSD VPS с большим количеством оперативной памяти
Как мы уже упоминали ранее, случайная скорость доступа к диску является одним из основным узким местом Odoo, поэтому убедитесь, что для размещается Odoo на основе SSD VPS. Всегда устанавливайте Odoo на VPS с большим количеством оперативной памяти, поскольку Odoo известен как ресурс интенсивного применения, и , если это возможно загрузите весь экземпляр Odoo и свою базу данных в оперативную память. Твердотельные накопители превосходят особенно в случайном доступе и они могут достичь IOPS произвольного доступа в сотни раз выше, чем обычных механических дисковых накопителей, поскольку SSD – накопители не имеют движущихся частей. Независимо от того, сколько оптимизации и конфигурации вы делаете на вашем Odoo, если сервер не быстрый или не работает на SSD, ваш Odoo будет медленным. Правильный хостинг для вашего Odoo является наиболее важным фактором производительности вашего Odoo.
Другие оптимизации Odoo включают в себя:
Включите опцию MultiProcessing в конфигурации Odoo
Для этого найдите двоичный файл OpenERP-server:
#updatedb #locate openerp-server /usr/bin/openerp-server
Выполните следующую команду:
#/usr/bin/openerp-server --help
Вывод этой команды должен быть таким:
Usage: openerp-server [options] Options: --version show program's version number and exit (...) Multiprocessing options: --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). --limit-memory-hard=LIMIT_MEMORY_HARD Maximum allowed virtual memory per worker, when reached, any memory allocation will fail (default 805306368 aka 768MB). --limit-time-cpu=LIMIT_TIME_CPU Maximum allowed CPU time per request (default 60). --limit-time-real=LIMIT_TIME_REAL Maximum allowed Real time per request (default 120). --limit-request=LIMIT_REQUEST Maximum number of request to be processed per worker (default 8192).
Число рабочих процессов должно быть равно количеству процессорных ядер, выделенных на VPS, или если вы хотите оставить некоторые ядра процессора исключительно для базы данных PostgreSQL, хрон рабочих мест или других приложений, установленных на том же самом VPS, где установлен и работает экземпляр Odoo, установите количество рабочих на более низкое значение, чем процессорных ядер, доступных на VPS, чтобы избежать истощения ресурсов.
limit-memory-soft, limit-memory-hard и self-explanatory, вы должны оставить их значения по умолчанию или изменить их в зависимости от оперативной памяти, доступной на фактической VPS.
Например, если у вас есть VPS с 8 ядрами CPU и 16 ГБ оперативной памяти, количество рабочих должно быть 17 (ядер процессора * 2 + 1), общий limit-memory-soft значение будет 640 х 17 = 10880 MB, и общий limit-memory-hard 768MB х 17 = 13056 MB, поэтому Odoo будет использовать максимум 12,75 ГБ оперативной памяти.
Например, на VPS с 16 Гб оперативной памяти и 8 процессорных ядер, отредактировать конфигурационный файл Odoo (например, /etc/odoo-server.conf), и добавьте в него следующие строки:
vi /etc/odoo-server.conf
workers = 17 limit_memory_hard = 805306368 limit_memory_soft = 671088640 limit_request = 8192 limit_time_cpu = 60 limit_time_real = 120 max_cron_threads = 2
Не забудьте перезапустить Odoo для того, чтобы изменения вступили в силу.
Правильно настроить и оптимизировать PostgreSQL
Что касается оптимизации PostgreSQL, это хорошая идея, чтобы обновить до последней версии PostgreSQL всякий раз, когда выходит новая версия. Есть два параметра в файле конфигурации PostgreSQL (pg_hba.conf), которые должны быть изменены: shared_buffers и effective_cache_size. Установите shared_buffers до 20% от объема доступной памяти, и effective_cache_size до 50% от объема доступной памяти.
Например, если Odoo установлена на SSD VPS с 16 Гб оперативной памяти, используйте следующие параметры файла pg_hba.conf:
vi /var/lib/postgresql/data/pg_hba.conf
shared_buffers = 3072MB effective_cache_size = 8192MB
Перезапустите службу PostgreSQL для того, чтобы изменения вступили в силу.
Кроме того, не забудьте вручную запускать ” VACUUM ” периодически. ‘Vacuuming’ очищает устаревшие или временные данные, но, пожалуйста, имейте в виду, что это тяжело на CPU и использование дискового пространства.