The Need to Monitor Linux Server Performance

Like most tech’s who look after servers, taking advantage of the inbuilt tools that Linux offers is the key to keeping your server healthy and helps you to spot problems. Heres a quick shortlist of tools that you can use to help view the status of the server, and a few common checks you can run when on the server:

1: Top – Process Activity Command
The top program provides a dynamic real-time view of a running system i.e. actual process activity. By default, it displays the most CPU-intensive tasks running on the server and updates the list every five seconds.

Commonly Used Hot Keys
The top command provides several useful hot keys:

Hot Key    Usage
t                 Displays summary information off and on.
m               Displays memory information off and on.
A                Sorts the display by top consumers of various system resources. Useful for quick identification of performance-hungry tasks on a system.
f                 Enters an interactive configuration screen for top. Helpful for setting up top for a specific task.
o                Enables you to interactively select the ordering within top.
r                 Issues renice command.
k                Issues kill command.
z                Turn on or off color/mono

2: w – Find Out Who Is Logged on And What They Are Doing
w command displays information about the users currently on the machine, and their processes.
# w username
# w vivek

 

Sample Outputs:
17:58:47 up 5 days, 20:28,  2 users,  load average: 0.36, 0.26, 0.24

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.1.3.145 14:55 5.00s 0.04s 0.02s vim/etc/resolv.conf
root pts/1 10.1.3.145 17:43 0.00s 0.03s 0.00s w

 3: ps – Displays The Processes
ps command will report a snapshot of the current processes. To select all processes use the -A or -e option:
# ps -A

Sample Outputs:
PID TTY         TIME CMD
1 ?                 00:00:02 init
2 ?                 00:00:02 migration/0
3 ?                 00:00:01 ksoftirqd/0
4 ?                 00:00:00 watchdog/0
5 ?                 00:00:00 migration/1
6 ?                 00:00:15 ksoftirqd/1
….
…..
4881 ?             00:53:28 java
4885 tty1         00:00:00 mingetty
4886 tty2         00:00:00 mingetty
4887 tty3         00:00:00 mingetty
4888 tty4         00:00:00 mingetty
4891 tty5         00:00:00 mingetty
4892 tty6         00:00:00 mingetty
4893 ttyS1      00:00:00 agetty
12853 ?           00:00:00 cifsoplockd
12854 ?           00:00:00 cifsdnotifyd
14231 ?           00:10:34 lighttpd
14232 ?           00:00:00 php-cgi
54981 pts/0     00:00:00 vim
55465 ?           00:00:00 php-cgi
55546 ?           00:00:00 bind9-snmp-stat
55704 pts/1     00:00:00 ps
ps is just like top but provides more information.

Show Long Format Output
# ps -Al
To turn on extra full mode (it will show command line arguments passed to process):
# ps -AlF

To See Threads ( LWP and NLWP)
# ps -AlFH

To See Threads After Processes
# ps -AlLm

Print All Process On The Server
# ps ax
# ps axu

Print A Process Tree
# ps -ejH
# ps axjf
# pstree

Print Security Information
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM

See Every Process Running As User Vivek
# ps -U vivek -u vivek u

Set Output In a User-Defined Format
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
# ps -eopid,tt,user,fname,tmout,f,wchan

Display Only The Process IDs of Lighttpd
# ps -C lighttpd -o pid=
OR
# pgrep lighttpd
OR
# pgrep -u vivek php-cgi

Display The Name of PID 55977
# ps -p 55977 -o comm=

Find Out The Top 10 Memory Consuming Process
# ps -auxf | sort -nr -k 4 | head -10

Find Out top 10 CPU Consuming Process
# ps -auxf | sort -nr -k 3 | head -10

4: netstat and ss – Network Statistics
The command netstat displays network connections, routing tables, interface statistics, masquerade connections, and multicast memberships. ss command is used to dump socket statistics. It allows showing information similar to netstat.

5: tcpdump – Detailed Network Traffic Analysis
The tcpdump is simple command that dump traffic on a network. However, you need good understanding of TCP/IP protocol to utilize this tool. For.e.g to display traffic info about DNS, enter:
# tcpdump -i eth1 ‘udp port 53′
To display all IPv4 HTTP packets to and from port 80, i.e. print only packets that contain data, not, for example, SYN and FIN packets and ACK-only packets, enter:
# tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’
To display all FTP session to 202.54.1.5, enter:
# tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20′
To display all HTTP session to 192.168.1.5:
# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’
Use wireshark to view detailed information about files, enter:
# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

These are just a few samples of commands that can be used – searching around google will detail further information including 3rd party tools such as iptraf.

This entry was posted in Managed Hosting. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>