Skip to content
IT Canvass
Platform performance · Lesson

Semaphores and node health

Quick answer

Understand the semaphore pools, spot exhaustion, and respond when an instance stops responding.

Key takeaways

  • Semaphores are per node worker slots, split by pool
  • Exhaustion looks like an outage even when the database is fine
  • Cancel first, then fix the cause
  • Quota rules prevent repeat incidents

What a semaphore is

Each application node has a limited number of worker slots called semaphores, split into pools for interactive transactions, background work and API traffic. A transaction holds a semaphore for its lifetime, so long transactions starve everyone else.

Spotting exhaustion

Symptoms are slow or hanging pages while the database looks healthy. Check node statistics for queued transactions, and the semaphore set usage on each node. A steadily growing queue on one pool identifies the culprit.

Response

Stabilise first, then fix the cause.

  • Cancel the offending transactions from the sessions list
  • Check for a scheduled job or integration that started at the same time
  • Apply or tighten quota rules for the pool that is exhausted
  • Review the query that caused it and index or filter it properly

Want to learn this properly?

Our live, instructor-led ServiceNow Training covers this hands-on, with real projects and a certification path.

Check your understanding

  1. What does a growing transaction queue with healthy database indicate?

    • A. Network failure
    • B. Semaphore exhaustion
    • C. Index corruption
    • D. Email backlog
    Show answer

    B. Semaphore exhaustion

    Work is waiting for worker slots on the node.

  2. What holds a semaphore?

    • A. Every user session
    • B. Each running transaction
    • C. Each ACL
    • D. Each table
    Show answer

    B. Each running transaction

    A transaction occupies a slot until it completes.

Frequently asked questions

Does adding nodes fix it?

It buys headroom but does not fix a query that runs for minutes. Fix the transaction, then size the instance.

Which pool usually breaks first?

The interactive pool during business hours, or the API pool when an integration loops without a limit.
CallWhatsAppEnquire