Skip to main content

How to Monitor Thread Count for Each Microservice in Linux

·502 words·3 mins
Linux CPU Thread Top Microservices Monitoring
Table of Contents

1. Background
#

Modern CPUs are multi-core, and microservices typically use multithreading to maximize performance. However, when troubleshooting production issues, it’s often necessary to know how many threads a particular process is running. Without advanced APM tools, many developers aren’t sure how to monitor thread usage at the OS level.

In this guide, we’ll walk through different ways to check and monitor thread counts for microservices running on a Linux server.


2. Check Thread Count in Linux
#

There are several built-in methods to check the number of threads a process is using.

2.1 Using the ps Command
#

The ps command displays information about active processes. With the -eLf options, you can also see thread-related details:

ps -eLf

Example output:

UID   PID  PPID   LWP  C NLWP STIME TTY    TIME CMD
root    1     0     1  0    1 14:45 ?      00:00:00 /usr/sbin/init
root   28     1    28  0    1 14:45 ?      00:00:00 /usr/lib/systemd/systemd-journald
root  153   123   153  0    1 14:50 pts/2  00:00:00 ps -eLf

Key fields:

  • PID: Process ID
  • PPID: Parent process ID
  • LWP: Lightweight process (thread ID)
  • NLWP: Number of threads in the process

If you only want the thread count for a specific PID, use:

ps -o nlwp <PID>

or equivalently:

ps -o thcount <PID>

To get the total thread count across the server:

ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'

2.2 Checking the /proc Directory
#

Linux exposes process details in /proc. You can check threads for a given PID:

ls /proc/<PID>/task/

Each entry corresponds to a thread ID.

Another way is to check the status file:

cat /proc/<PID>/status | grep Threads

This outputs the current thread count for that process.


3. Real-Time Thread Monitoring
#

3.1 Using watch with ps
#

To continuously monitor the number of threads for a process, combine watch with ps:

watch -n 1 ps -o thcount <PID>

This refreshes every second and shows live thread count updates.


3.2 Using the top Command
#

top provides real-time system monitoring but doesn’t display thread counts by default.

To enable thread count:

  1. Run top
  2. Press f to enter field management
  3. Select the nTH field (number of threads)
  4. Press q to return

Now, top will display a nTH column showing the number of threads per process.

Example view:

PID   USER  PR  NI   VIRT   RES  SHR  S %CPU %MEM  TIME+  COMMAND   nTH
1     root  20   0  21456  9212 7048 S  0.0  0.1   0:00.28 systemd    1
28    root  20   0  26528  7976 7104 S  0.0  0.1   0:00.04 journald   1
119   root  20   0  12068  3664 3100 S  0.0  0.0   0:06.19 top        1

4. Summary
#

To monitor microservice thread usage in Linux:

  • Use ps for one-time snapshots
  • Use /proc for detailed process information
  • Use watch or top for real-time monitoring

This helps identify thread overuse issues in microservices and ensures better resource management on your servers.


👉 Next step: You can also integrate these commands into monitoring scripts or tools like Prometheus + Grafana for automated thread usage alerts.