Skip to content

Website & Server Help

Unlimited Webspace Help

Menu
  • Home
  • Apps
  • Website
    • Sending email from a WordPress website hosted on an IONOS server
    • How to increase Upload Max Filesize
    • How to reset a WordPress password
    • 22 Ways To Speed-Up A Plesk Website
  • Server
    • Linux or Plesk Server Error 500
    • Windows Server: File cannot be loaded. The file is not digitally signed.
    • Adding or modifying IP addresses on a Linux server
    • Installing Remote Desktop on Debian 12
    • Installing Remote Desktop on Ubuntu 22.04
    • How To Install a Let’s Encrypt SSL in Apache on Debian/Ubuntu
  • Favs
    • How to Connect to a Server
    • The Ultimate Guide to Setting Up a Proper Plesk Email Server With IONOS
    • The Ultimate IONOS Migration Guide
    • Help! My Plesk Websites Are Down!
    • Running tests for a slow server or dropped packets
    • Checking File System and Hard Drive Health
Menu

Diagnosing a slow website on Linux

Posted on June 30, 2023June 30, 2023 by admin

In this tutorial, we will cover various tools and techniques for diagnosing and fixing a slow website. We will cover the following topics:

  1. Benchmarking your server with ApacheBench
  2. Monitoring CPU usage with top
  3. Changing process priority with renice
  4. Listing processes and searching for a specific process with ps and grep
  5. Locating a file or directory with locate
  6. Checking which file calls a process with grep
  7. Stopping a process with killall

1. Benchmarking your server with ApacheBench

ApacheBench (ab) is a load testing and benchmarking tool for HTTP servers. It can be used to test the performance of a web server by inundating it with HTTP requests and recording the response times. To use ApacheBench, you need to have it installed on your system.

To install ApacheBench on Ubuntu, run the following command:

sudo apt-get install apache2-utils

Once installed, you can use ApacheBench to test the performance of your website by running the following command:

ab -n 500 site.example.com/

This command will send 500 requests to the specified URL and report the results. You can adjust the number of requests and other parameters as needed. For more information on how to use ApacheBench, refer to the official documentation.

2. Monitoring CPU usage with top

The top command is a system monitoring tool that displays information about the system’s CPU usage, memory usage, and other system statistics. To run top, simply open a terminal and type top.

One important metric to look for when diagnosing a slow website is the CPU usage. The %Cpu(s) line in the top output shows the percentage of CPU time spent in user mode, system mode, and idle mode. The sum of the user and system modes should not be over the number of cores on your system. If it is, this indicates that the CPU is being overloaded and may be a bottleneck for your website’s performance.

3. Changing process priority with renice

The renice command is used to change the priority of a running process. The priority of a process determines how much CPU time it is allocated by the system. A higher priority means that the process will be given more CPU time, while a lower priority means that it will be given less.

To change the priority of a process, you can use the following command:

renice <priority> <pid>

Where <priority> is a value between 0 and 19, with 0 being the highest priority and 19 being the lowest, and <pid> is the process ID of the process you want to change the priority of.

For example, to change the priority of all ffmpeg processes to the lowest priority, you can use the following command:

for pid in $(pidof ffmpeg); do renice 19 $pid; done

4. Listing processes and searching for a specific process with ps and grep

The ps command is used to list the currently running processes on your system. By default, it will list all processes running under your user account. To list all processes running on the system, use the -e option. To search for a specific process, you can pipe the output of ps to the grep command.

For example, to search for all ffmpeg processes, you can use the following command:

ps ax | grep ffmpeg

This will list all processes containing the string ffmpeg. You can then use the process ID (PID) to perform other operations on the process, such as changing its priority or stopping it.

5. Locating a file or directory with locate

The locate command is used to search for files and directories on your system. It works by searching a pre-built database of file and directory names, so it can be much faster than using the find command. To use locate, simply type locate followed by the name of the file or directory you want to search for.

For example, to search for a file named index.html, you can use the following command:

locate index.html

This will search the database for all files and directories containing the string index.html.

6. Checking which file calls a process with grep

If you have identified a process that is causing performance issues on your website, you may want to find out which file is calling that process. To do this, you can use the grep command to search for the process name in your website’s files.

For example, to search for all files containing the string ffmpeg, you can use the following command:

grep -r "ffmpeg" /var/www/html/

This will search all files in the /var/www/html/ directory and its subdirectories for the string ffmpeg.

7. Stopping a process with killall

If you have identified a process that is causing performance issues on your website and you want to stop it, you can use the killall command to send a signal to all processes with a given name.

For example, to stop all ffmpeg processes, you can use the following command:

killall -STOP ffmpeg

This will send the STOP signal to all processes with the name ffmpeg, effectively stopping them.

In this tutorial, we covered various tools and techniques for diagnosing and fixing a slow website. By using these tools, you can identify performance bottlenecks and take steps to optimize your website’s performance.

Special Offer

The internet's fastest, cheapest, unlimited bandwidth VPS

VPS
1core | 1GB RAM | 10GB NVMe
Unlimited Bandwidth | 1Gbps
$2/month - risk free