Skip to main content
Version: 7.0

Process monitor

The process monitor is a built-in platform mechanism that shows the current state of the application server and the database server: active application server threads, active SQL queries, lock chains, and a set of actions for interrupting and forcibly terminating these processes.

Monitor contents

The monitor is opened by the Administration > System > Process monitor form and consists of three tabs:

TabWhat it shows
All processesThe full list of active server threads and active SQL queries, joined by logical process
Blocking processesProcesses holding locks that other processes are waiting for
Blocked processesProcesses waiting for locks to be released

Columns

Each monitor row combines two aspects of a single logical process: the server thread (Java) and the SQL query associated with it (if the process is working with the database at that moment). Some columns relate to the java thread, others to the database query.

Process identification

ColumnWhat it shows
Process thread IDIdentifier of the application server thread (for database processes with no java thread — s + the backend pid)
Process ID (SQL)Identifier of the backend process on the database server
ComputerThe computer the connection was created from
UserThe user the process belongs to
User address (SQL)Network address of the database connection client (this is the application server's address, not the end user's browser)

Java thread

ColumnWhat it shows
Java-thread nameName of the application server thread
Status (Java)State of the java thread: RUNNABLE, BLOCKED, WAITING, TIMED_WAITING
Process LSF stack traceThe execution stack at the lsFusion level — the chain of actions/properties/forms running in the thread. It shows the application's logic rather than JVM frames; usually the most useful column for understanding what the process is actually doing
Java-thread stack trace (Java)The raw JVM call stack of the thread at the moment of polling
Java-thread stack trace (SQL)The java stack of the thread that issued the current SQL query (a snapshot attached to the database process)
Thread allocated bytesThe total amount of memory the thread has allocated over its entire lifetime (the counter only grows and does not decrease on garbage collection). This is not current usage but the thread's cumulative load on the heap
Last thread allocated bytesThe amount of memory the thread allocated during the last measurement interval — the allocation rate
Process call date-timeThe moment the current call (task) started on the java thread
Blocking (Java)The lock (monitor) the thread currently holds or is waiting for

The Thread allocated bytes and Last thread allocated bytes columns are populated only when the readAllocatedBytes setting is enabled.

SQL query

ColumnWhat it shows
Query (SQL)A shortened representation of the current SQL query
Full query (SQL)The full query text; the Copy full query into the clipboard action copies it to the clipboard
Debug Info (SQL)A breakdown of the parameters and context of the running query — the values bound into the SQL; helps understand what data it is operating on. Produced only for queries exceeding a threshold
Start date-time (SQL)The moment the current query started on the database server (used for age-based highlighting)
Status (SQL)The database session state (active, idle, idle in transaction, …), taken from pg_stat_activity
Wait Event Type (SQL), Wait Event (SQL)The category (Lock, LWLock, IO, Client, …) and the specific event the database backend is waiting on. They show exactly what the query is stuck on
Status Message (SQL)An internal progress message for apply / event processing — a step of the form event: 3/57 <property>
Query TimeoutThe timeout (in seconds) for the currently executing query
Disabled nested loopThe nested-loop plan is disabled for the session (SET enable_nestloop=off) — a planner optimization for heavy queries

The query is highlighted with a background based on the age of the transaction it runs in: the longer the transaction holds its changes, the more aggressive the background, which visually separates short-lived operations from long or stuck ones.

Transaction

ColumnWhat it shows
Active (SQL)Whether a query is currently running
In transaction (SQL)The process is inside a transaction
Transaction start date-time (SQL)The moment the transaction started; the longer it stays open, the more aggressive the row's background highlighting
Attempt number (SQL)How many times the transaction has been restarted (deadlock, serialization conflict, the platform's "handled" conflicts). 0 — no retries; a value like 2(...) — the 2nd or a later attempt is in progress

Locks

For each process, the monitor additionally shows the list of processes it blocks and the list of processes that block it. On the Blocking and Blocked tabs this relationship is expanded into a hierarchy: you can navigate from a lock-holding process to those waiting for it, and vice versa. The lock graph is built recursively — cyclic mutual locks (deadlock) are detected and flagged separately.

ColumnWhat it shows
Blocking thread, Blocking thread IDThe thread holding the lock the current process is waiting for
Blocked process countHow many processes (directly and transitively) are waiting for this process
Blocking depthThe process's depth in the lock-wait tree
DeadlockA flag for participation in a cycle of mutual locks

Interruption and forced termination

Four actions are available for each process in the monitor:

ActionWhat it doesWhen to use
Cancel Java-processSends the thread a cancellation request through the standard interruption mechanism; the process finishes its current operation and exits at the next interruption-flag checkA regular cancellation of a long or stuck user action
Kill Java-processForced termination of the threadA last resort: the process does not respond to cancellation
Cancel SQL-processSends the database server a request to cancel the running queryA long or stuck query after which the process should continue normally
Kill SQL-processForced termination of the database processA stuck database process interfering with others

"Kill" is a last-resort operation: after it, the state of the application server and the database server may require a restart.

Filter by process type

The monitor shows processes through one of four filters: all processes, all active processes, only active SQL queries, or only active application server threads. The "active" filters screen out processes idling outside a transaction or query and leave only those that actually load the server at the moment of polling. By default the monitor opens on active SQL queries. Idle system threads — the event thread, network I/O, JVM service threads — are filtered out of the list as uninformative.