-
Type:
Change Request
-
Resolution: Unresolved
-
Priority:
Trivial
-
None
-
Affects Version/s: 7.0.26, 7.4.10, 8.0.0alpha2
-
Component/s: Frontend (F)
-
None
Modifying shared entities (templates, item/trigger prototypes) forces the Zabbix frontend to propagate changes to all inherited or discovered entities within a single, monolithic database transaction.
On large-scale environments, updating a widely assigned template or a heavy prototype triggers a massive cascading database operation. For example, if a template generates 500 items via LLD and is linked to 100 hosts, updating one prototype pushes a huge UPDATE statement in one operation block.
This architecture causes several critical operational issues:
- Frontend: Pushes PHP past max_execution_time thresholds and triggers PHP timeouts
- DB Limits: Exceeds database transaction size limits, WAL capacity, or maximum memory allocation per transaction.
- Locking: Long-running updates lock core configuration tables, which blocks the Zabbix server configuration syncer and creates replication lag.
It should be really nice to implement a chunking/batching mechanism within the frontend and API engine for configuration updates:
- Split mass entity updates into distinct chunks.
- Execute and commit each chunk in its own separate database transaction.
- Implement error handling to manage partial failures safely without locking or corrupting the remaining configuration.