Archive rule and destroy rule properties
Summarize
Summary of Archive Rule and Destroy Rule Properties
The Archive Rule and Destroy Rule properties in the ServiceNow AI Platform automate the management of system resources during the archiving process. This process employs a producer-consumer model to efficiently queue records for archiving in the Archive Job Execution Chunks table.
Show less
Key Features
- Producer-Consumer Model: The ArchiveProducerJob creates chunks of records designated for archiving, with each chunk adhering to a specific archive rule.
- Configurable Chunk Size: Control the number of records processed in each batch using the
glide.db.archive.chunksizeproperty, defaulting to 1000. - Max Rule Records: Set a limit on the number of records processed per rule across all chunks with the
glide.db.archive.max.rule.recordsproperty, defaulting to 10000. - Consumer Management: Manage the number of consumers processing chunks with
glide.db.archiving.maxconsumerworkers, which defaults to 4 consumers. - Processing Limits: Control how many batches are processed by each consumer with the
glide.db.archive.max.batchesproperty, defaulting to 10. - Error Handling: If a chunk remains active beyond the time specified in
glide.db.archive.chunk.max.process.time(default 600000 ms), it is marked as an error.
Key Outcomes
By configuring these properties, ServiceNow customers can effectively manage the archiving process, ensuring it does not overwhelm system resources while maintaining data integrity. Adjusting these settings allows for fine-tuning of performance, contributing to smoother operations and improved system efficiency.
Rules to prevent the archive process from consuming too many system resources have been automated. You can manually change the system behavior.
The archive process uses a producer and consumer model. Records are queued for archiving in the Archive Job Execution Chunks [sys_archive_run_chunk] table in batches.
- The ArchiveProducerJob creates chunks of sys_ids records that need to be archived. Each chunk contains records pertaining to a single archive rule. The maximum number of records in a chunk is specified by the property glide.db.archive.chunk_size. The maximum number of records for a single rule across all chunks is specified by glide.db.archive.max.rule.records.
- The producer starts up 4 (default) ArchiverJob consumers. The exact number of consumers is specified by glide.db.archiving.max_consumer_workers.
- Consumers read and process chunks of sys_ids. The number of chunks each consumer processes is specified by glide.db.archive.max.batches. The chunks processed by each consumer may be from different archive rules.
- Consumers repeat reading chunks of sys_ids until none remain or the limit of chunks a consumer can process (specified by glide.db.archive.max.batches) is reached, after which it shuts down and schedules another consumer.
- If a chunk remains in the running state longer than what's specified in glide.db.archive.chunk.max.process.time, the system assumes that the consumer abruptly terminated, and it changes the chunk’s status to error. This doesn't stop or end any running consumers.
| Name | Description | Type | Default Value |
|---|---|---|---|
| glide.db.archive.chunk_size | Number of unique identifiers added to each record in the Archive Job Execution Chunks [sys_archive_run_chunk] table. The record is formatted as CSV values in the keys field of the Archive Job Execution Chunk (sys_archive_run_chunk.do) form. | Integer | 1000 |
| glide.db.archive.chunk.max.process.time | Number of milliseconds a record can remain in the Active state in the Archive Job Execution Chunks [sys_archive_run_chunk] table. The time is the difference between the system time and the value of the Start field in the Archive Job Execution Chunks [sys_archive_run_chunk] table. | Integer | 600000 |
| glide.db.archive.max.rule.records | Maximum number of records to batch per consumer, per rule. | Integer | 10000 |
| glide.db.archive.debug | Option that enables verbose logging when copying the column definitions from the original table to the archive table. | true | false | false |
| glide.db.archive.max.batches | Number of chunks, which are records from the Archive Job Execution Chunks [sys_archive_run_chunk] table, processed by a consumer before it shuts down and schedules another consumer. | Integer | 10 |
| glide.db.archiving.max_consumer_workers | The maximum number of concurrent consumers cluster-wide. | Integer | 4 |