В первую очередь, следует изучить вывод команды top:
top

Анализ проводится по строкам сверху вниз. Параметр load average отображается совокупную загруженность системы. Его значение меньше 1 означает отсутствие серьезной нагрузки. Значение больше 1 может предвещать проблемы с производительностью.
Далее переходим к строке %Cpu(s). Все значения в нем, за исключением поля id, не должны на длительное время принимать большие значения. Ниже, в окне вывода процессов, можно уточнить, какой из них потребляет больше всего процессорного времени.

Строки KiB Mem и KiB Swap отображают статистику потребления ОЗУ и раздела/файла подкачки. Тут необходимо следить за резервом свободной оперативной памяти. Выяснить, какие процессы больше всего ее потребляют, можно, изменив сортировку с помощью комбинации клавиш <Shift>+<M>. Вернуться обратно – <Shift>+<P>.
Необходимо отдельно остановиться на параметре wa в строке %Cpu(s). Его большое значение не говорит о высоком потреблении CPU. Наоборот, он отображает совокупный простой процессов из-за ожидания окончания операций ввода-вывода. Это означает, что процесс вместо того, чтобы выполняться, находился в замороженном состоянии, пока данные не были записаны/прочитаны с HDD или переданы по сети. Проанализировать, к какому из HDD идет наибольшее количество обращений, можно с помощью команды iostat -d -x 5 3:
iostat

Для того, что бы узнать, какой из процессов больше всего нагружает дисковую подсистему, следует воспользоваться командой iotop:
iotop

Если проблем с дисковой подсистемой не выявлено, необходимо изучить статистику прохождения трафика через сетевые интерфейсы с помощью команды sar -n DEV 1 3:
sar-n

Также рекомендуется проверить количество сетевых соединений командой netstat –ip -t -an:
netstat

Можно их просто посчитать с помощью netstat –ip -t -an | wc -l:
netstat-wc