为何Odoo v8日志出现“openerp.modules.registry: Multiprocess signaling check”?
Troubleshooting Odoo v8 Slowness & "Multiprocess signaling check" Log Message
Hey there, let's unpack your problem clearly—first, let's demystify that log message, then dive into why your system might be running slow, and how to fix it.
What does "openerp.modules.registry: Multiprocess signaling check" mean?
That debug log entry is not the cause of your slowness—it's just Odoo v8 doing its job in multiprocess mode. Here's the breakdown:
- Each Odoo database has a
registry: a centralized store of all module metadata (models, fields, views, workflows, etc.) that workers need to operate. - When running with multiple workers, Odoo periodically checks that all workers have the same, up-to-date registry state (e.g., after installing/updating modules, or on startup). This "signaling check" is a lightweight synchronization step to keep everything consistent.
- Since you have two databases, seeing one entry per database is totally normal—this is just initialization/validation for each DB's registry, not a recurring performance drain.
Why your system might be running slow (and fixes)
Let's go through the most likely culprits given your setup (Odoo workers=5, 1GB each; Nginx 3 workers):
1. Resource Bottlenecks (CPU/Memory)
- Worker count vs. CPU cores: Odoo's recommended formula for worker count is
(2 * number of CPU cores) + 1. If your server has fewer than 2 cores, 5 workers could cause excessive context-switching (CPU bouncing between workers), killing performance. Check your core count withnproc, then adjustworkersin your Odoo config if needed. - Memory constraints: 5 workers × 1GB = 5GB just for Odoo workers. Add in the main Odoo process, PostgreSQL, Nginx, and OS overhead—if your server has less than 8GB total RAM, you're probably hitting swap (disk-based memory), which is drastically slower. Verify with
free -h; ifswapusage is high, either reduce worker count or add more RAM.
2. Nginx Configuration Issues
- Worker mismatch: Nginx's 3 workers should align with your server's CPU cores (ideally 1 worker per core). If you have fewer than 3 cores, this can cause unnecessary overhead.
- Proxy timeouts & caching: Make sure your Nginx config for Odoo has:
- Longer timeout values to avoid premature request termination:
proxy_connect_timeout 300s; proxy_read_timeout 300s; proxy_send_timeout 300s; - Caching for static assets (CSS, JS, images) to reduce repeated requests to Odoo:
location /web/static/ { expires 30d; proxy_pass http://odoo; proxy_cache_valid 200 30d; proxy_cache_bypass $http_upgrade; }
- Longer timeout values to avoid premature request termination:
3. Database Performance
- Slow queries: Two databases mean more load on PostgreSQL. Check for missing indexes or inefficient queries:
- Enable PostgreSQL's slow query log (edit
postgresql.confto setlog_min_duration_statement = 1000to log queries taking over 1s). - Use Odoo's debug mode (add
?debug=1to the URL) to check which views/actions are loading slowly—look for long-running SQL in the debug toolbar.
- Enable PostgreSQL's slow query log (edit
- Database maintenance: Run vacuum and analyze on both databases to optimize table statistics:
VACUUM ANALYZE;
4. Odoo Configuration Tweaks
- Memory limits: Ensure
limit_memory_softandlimit_memory_hardin your Odoo config are set appropriately (e.g.,limit_memory_soft = 900MBandlimit_memory_hard = 1GBto match your worker allocation) to prevent workers from being killed prematurely. - Log level: If you're running with
log_level = debug, this can generate massive log files and slow down disk I/O. Switch tolog_level = infounless you're actively debugging. - Unused modules: Disable any modules you don't need—each module adds overhead to the registry and database queries.
Quick Checklist to Start Debugging
- Check if the "Multiprocess signaling check" log only appears on Odoo startup, or is recurring. If it's only on startup, it's definitely not causing ongoing slowness.
- Run
htopto monitor CPU/memory usage in real-time—look for high CPU usage from Odoo workers or PostgreSQL, or high memory/swap usage. - Test with a single worker temporarily (
workers=1) to see if performance improves—this will rule out multiprocess contention issues.
内容的提问来源于stack exchange,提问作者ChesuCR
相关产品推荐
相关产品推荐

