To check the network connection limit numbers in Linux, you can examine various system and kernel settings related to the maximum number of open file descriptors, sockets, and network connections. Here's how to do it:
1. Check the Maximum Number of Open File Descriptors
This value limits the total number of files, sockets, or other resources a process can open.
-
Check the current limit for your session:
ulimit -n
The result shows the maximum number of open file descriptors for the current shell session.
-
Check the system-wide limit:
cat /proc/sys/fs/file-max
This value shows the maximum number of open file descriptors allowed system-wide.
2. Check the Maximum Number of Network Connections
-
Maximum number of local ports available for connections:
cat /proc/sys/net/ipv4/ip_local_port_range
This returns a range of port numbers (e.g.,
32768 60999
). This range defines the ports available for outgoing connections. The larger the range, the more concurrent connections can be made. -
TCP connection tracking limit:
cat /proc/sys/net/netfilter/nf_conntrack_max
This is the maximum number of connections the system can track (applicable if using connection tracking like
iptables
).
3. Check Socket Buffer Limits
-
TCP read/write buffer limits:
cat /proc/sys/net/core/rmem_max cat /proc/sys/net/core/wmem_max
These values define the maximum size of the receive and send buffers for TCP sockets.
-
Maximum number of queued connections:
cat /proc/sys/net/core/somaxconn
This value defines the maximum length of the queue for incoming connections (e.g., for Redis or web servers).
4. Check Per-Process and System-Wide Limits
-
Per-process limits: Check the limits for a specific process using its PID:
cat /proc/<PID>/limits
-
System-wide TCP connection limits: Check kernel settings related to TCP:
sysctl -a | grep net.ipv4.tcp_max_syn_backlog sysctl -a | grep net.ipv4.tcp_fin_timeout sysctl -a | grep net.core.somaxconn
5. Adjusting Limits (Optional)
If the limits are too low, you can increase them:
-
Temporary adjustments: Use
sysctl
to adjust kernel parameters temporarily:sudo sysctl -w fs.file-max=1000000 sudo sysctl -w net.core.somaxconn=65535 sudo sysctl -w net.ipv4.tcp_max_syn_backlog=65535
-
Permanent adjustments: Add the settings to
/etc/sysctl.conf
or/etc/sysctl.d/custom.conf
:fs.file-max = 1000000 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535
Apply changes:
sudo sysctl -p
-
Increase per-user limits in
/etc/security/limits.conf
or/etc/security/limits.d/
:<username> hard nofile 1000000 <username> soft nofile 1000000
-
Update PAM limits for sessions: Ensure
/etc/pam.d/common-session
and/etc/pam.d/common-session-noninteractive
include:session required pam_limits.so
6. Monitoring Connections
Use the following commands to monitor the number of active connections:
-
Count active TCP connections:
netstat -an | grep -i tcp | wc -l
-
Track connections in TIME_WAIT or ESTABLISHED:
netstat -an | grep TIME_WAIT | wc -l netstat -an | grep ESTABLISHED | wc -l