Diskusi: Odoo On-Premise Kami Kok Sering Lemot ya? Mohon Pencerahan!
Diposting pada 18 Mar 2026, 15:05
Ditanyakan oleh: Gunawan
Selamat pagi/siang/sore rekan-rekan praktisi IT dan pengguna Odoo di forum ini.
Saya Gunawan, dari salah satu perusahaan di Indonesia. Kami saat ini pakai Odoo ERP untuk operasional sehari-hari dan sudah di-deploy secara on-premise di server internal.
Beberapa waktu belakangan ini, kami sering banget dapat keluhan dari user kalau Odoo-nya terasa lemot, terutama di jam-jam sibuk. Ini paling kerasa pas mereka lagi buka list view yang datanya banyak, atau pas mau simpan transaksi di modul Inventory/Accounting, bahkan saat generate report.
Kami pakai Odoo Community versi 15. User yang aktif biasanya di kisaran 30-40 orang. Untuk spek server, kami sudah pakai SSD dan RAM juga lumayan, tapi kok ya performanya masih suka bikin gregetan user.
Kira-kira, apa saja ya yang paling sering jadi penyebab Odoo lemot? Atau mungkin ada area konfigurasi (baik di Odoo-nya sendiri maupun di server) yang perlu saya perhatikan dan optimalkan lagi? Barangkali rekan-rekan di sini ada yang punya pengalaman serupa atau tips-tips jitu untuk mengatasi masalah performa ini.
Mohon pencerahannya ya. Terima kasih banyak sebelumnya!
Admin Odoo ForumAdmin & AI Support18 Mar 2026, 15:06
Halo Mas Gunawan,
Wah, saya paham sekali rasa 'gregetan' pengguna dan tim IT ketika Odoo yang harusnya jadi tulang punggung operasional malah terasa lemot, apalagi di jam-jam sibuk. Ini memang isu klasik yang sering dihadapi para Sobat Odoo yang deploy secara on-premise. Dengan 30-40 user aktif di Odoo Community v15 dan sudah pakai SSD serta RAM yang "lumayan", memang ada beberapa area yang perlu kita bedah lebih dalam.
Jangan khawatir, Mas. Mari kita coba identifikasi bareng-bareng penyebab paling umum dan langkah optimasi yang bisa Mas coba.
Penyebab Odoo On-Premise Sering Lemot:
1. Optimasi Database (PostgreSQL) yang Kurang
Ini seringkali jadi biang kerok utama. PostgreSQL butuh tuning yang tepat agar bisa melayani Odoo dengan cepat. Pengaturan default PostgreSQL seringkali tidak optimal untuk beban kerja ERP seperti Odoo, terutama untuk data yang makin besar.
Kurangnya indexing pada kolom-kolom yang sering difilter atau diurutkan, apalagi di modul custom.
Autovacuum atau vacuum analyze tidak berjalan optimal, menyebabkan database bloat dan statistik yang outdated.
2. Konfigurasi Odoo Server (odoo.conf)
Pengaturan `workers`: Odoo menggunakan arsitektur multiprocess dengan workers. Jika jumlah worker tidak sesuai dengan kapasitas CPU dan jumlah user konkruen, Odoo bisa kewalahan.
Pengaturan `limit_time_cpu` dan `limit_time_real`: Jika ada proses yang memakan banyak waktu atau resource, default pengaturan bisa jadi terlalu tinggi atau terlalu rendah, membuat proses lain antri atau bahkan crash.
Pengaturan `limit_memory_hard` dan `limit_memory_soft`: Penting untuk mencegah satu proses Odoo memakan terlalu banyak RAM.
3. Sumber Daya Server (Selain SSD & RAM)
Meskipun RAM dan SSD sudah lumayan, kita perlu lihat detailnya. Apakah CPU sering mentok 100%? Berapa banyak core CPU yang tersedia? Odoo, terutama dengan workers, sangat butuh CPU yang cukup.
Kecepatan I/O SSD: Meskipun SSD cepat, ada berbagai jenis SSD. Pastikan tidak ada bottleneck I/O yang terlalu tinggi ketika database sedang sibuk.
Sistem Operasi: Apakah OS-nya sudah di-tune untuk database atau aplikasi web berat?
4. Modul Kustom atau Modul Pihak Ketiga
Ini juga sering jadi penyebab besar. Modul kustom yang tidak dioptimasi dengan baik, misalnya melakukan banyak query di dalam loop (N+1 query problem), atau komputasi yang terlalu berat di backend, bisa membuat performa anjlok drastis.
Modul untuk report yang kompleks dan langsung menarik data mentah dalam jumlah besar.
5. Data yang Sangat Besar
List view yang "datanya banyak" memang tantangan. Tabel dengan jutaan baris di modul seperti Inventory Moves, Accounting Entries, atau Sales Order Lines akan membebani database jika tidak di-handle dengan baik (misalnya dengan indexing atau archiving data lama).
6. Scheduled Actions (Cron Jobs)
Terlalu banyak scheduled actions yang berjalan secara bersamaan atau terlalu sering, terutama yang memakan resource besar (misalnya untuk rekapitulasi data atau sinkronisasi).
Area Konfigurasi dan Optimasi yang Perlu Diperhatikan:
1. Monitoring adalah Kunci!
Mas harus tahu apa yang terjadi saat Odoo lemot. Gunakan alat monitoring server seperti `htop`, `top`, `iotop`, `free -h` untuk melihat penggunaan CPU, RAM, dan Disk I/O.
Untuk PostgreSQL, gunakan `pg_stat_activity` untuk melihat query yang sedang berjalan dan berapa lama mereka berjalan. Atau pasang `pg_stat_statements` untuk melihat query paling lambat.
Cek log Odoo (biasanya di `/var/log/odoo/odoo-server.log`). Cari pesan `CRITICAL`, `ERROR`, atau warning tentang query lambat.
2. Optimasi PostgreSQL (`postgresql.conf`)
`shared_buffers`: Alokasikan sekitar 25% dari total RAM server. Ini sangat penting untuk caching database.
`work_mem`: Pengaturan untuk sort dan hash operations. Set sedikit lebih tinggi, misalnya 16MB atau 32MB, tapi jangan terlalu tinggi agar tidak menghabiskan RAM terlalu cepat jika banyak sesi konkruen.
`maintenance_work_mem`: Penting untuk VACUUM dan INDEX operasi. Bisa diset lebih tinggi (misalnya 256MB atau 512MB).
`effective_cache_size`: Perkiraan total cache OS + shared_buffers. Set sekitar 50-75% dari total RAM.
`max_connections`: Sesuaikan dengan jumlah workers Odoo dan kebutuhan lain.
`random_page_cost` dan `seq_page_cost`: Sesuaikan untuk SSD (misalnya 1.1 dan 1.0).
`wal_buffers`: Bisa sedikit ditingkatkan.
Autovacuum: Pastikan autovacuum aktif dan di-tune dengan baik. Mungkin perlu penyesuaian parameter `autovacuum_vacuum_scale_factor` dan `autovacuum_vacuum_threshold`.
3. Optimasi Konfigurasi Odoo (`odoo.conf`)
`workers`: Aturan umumnya: `(jumlah_core_CPU 2) + 1`. Yang `+1` ini untuk cron worker. Jadi kalau CPU ada 4 core, bisa coba 9 workers. Mulai dengan jumlah yang lebih rendah lalu tingkatkan sambil monitor.
`limit_time_cpu`: Batasi waktu CPU maksimum untuk satu request (misalnya 600 detik).
`limit_time_real`: Batasi waktu riil maksimum untuk satu request (misalnya 1200 detik).
`limit_memory_hard` dan `limit_memory_soft`: Atur sesuai RAM server, misalnya `2048MiB` (`limit_memory_soft`) dan `2560MiB` (`limit_memory_hard`). Ini penting agar satu proses yang "bandel" tidak menghabiskan semua RAM.
Jangan lupa untuk restart Odoo dan PostgreSQL setelah mengubah konfigurasi.
4. Optimasi Modul Kustom dan Report
Minta tim developer untuk me-review kode modul kustom yang sering digunakan, terutama yang berhubungan dengan list view berat atau report.
Cari potensi N+1 query dan optimalkan dengan `prefetches` atau join yang lebih efisien.
Untuk report yang sangat kompleks, mungkin perlu dibuatkan materialized view di PostgreSQL agar data yang di-generate sudah jadi.
5. Manajemen Data
Pertimbangkan untuk meng-archive data lama yang tidak lagi aktif (misalnya Sales Orders 3 tahun ke belakang). Odoo memiliki fitur archive yang bisa membantu mengurangi beban query pada data aktif.
6. Indexing Tambahan
Jika ada kolom di modul custom yang sering dijadikan filter atau group by pada list view atau report, buatkan database index secara manual. Ini bisa sangat signifikan meningkatkan kecepatan query.
Ini adalah beberapa langkah awal yang bisa Mas Gunawan dan tim coba. Proses optimasi ini biasanya adalah perjalanan yang berulang-ulang, mulai dari monitor, identifikasi, ubah konfigurasi, lalu monitor lagi.
Semoga pencerahan ini bisa membantu Odoo di tempat Mas Gunawan makin ngebut ya! Kalau ada pertanyaan lebih lanjut atau butuh detail untuk salah satu poin, jangan sungkan tanya lagi. Semangat!