Managing Long-Running MySQL Queries to Prevent `max_user_connections` Issues

When facing issues related to `max_user_connections` in MySQL, managing long-running queries effectively can help alleviate the problem. Follow these steps to create a solution that automatically terminates queries that have been running for an extended period.

#### Step 1: Create a PHP Script

1. **Create the PHP File:**

   Create a file named `kill_long_queries.php` in your server's directory.

2. **Write the Script:**

   Copy and paste the following code into `kill_long_queries.php`:

  <?php
   // Replace with your MySQL credentials
   $mysqli = new mysqli("localhost", "username", "password", "dbname");

   // Check the connection
   if ($mysqli->connect_errno) {
       echo "Failed to connect to MySQL: " . $mysqli->connect_error;
       exit();
   }

   // Get the list of running processes
   $result = $mysqli->query("SHOW FULL PROCESSLIST");

   // Check for query errors
   if (!$result) {
       echo "Error: " . $mysqli->error;
       exit();
   }

   // Loop through the results and terminate long-running queries
   try {
       while ($row = $result->fetch_assoc()) {
           // Check if the query has been running for more than 10 minutes (600 seconds)
           if ($row['Time'] > 600) {
               // Terminate the long-running query
               $mysqli->query("KILL " . $row['Id']);
           }
       }
   } catch (Exception $e) {
       echo "Error: " . $e->getMessage();
   }

   // Close the connection
   $mysqli->close();
   ?>


   - **Note:** Replace `username`, `password`, and `dbname` with your MySQL credentials.

#### Step 2: Set Up a Cron Job

1. **Configure the Cron Job:**

   Set up a cron job on your server to run the `kill_long_queries.php` script periodically. This ensures that long-running queries are automatically terminated.

2. **Cron Job Command:**


   Use the following command to configure the cron job:

   ```bash
   /usr/local/bin/php /home/webaddress/public_html/kill_long_queries.php
   ```

   - **Note:** Replace `/home/webaddress/public_html/kill_long_queries.php` with the path to your PHP script.

3. **Set Cron Job Frequency:**


   Configure the cron job to run at your desired frequency (e.g., every 5 minutes). You can do this by editing your `crontab` file:

 
   crontab -e
 

   Add the following line to schedule the job:

 
   */5 * * * * /usr/local/bin/php /home/webaddress/public_html/kill_long_queries.php
  

   - This example runs the script every 5 minutes. Adjust the schedule as needed.

Leveraging Twig in PHP: A Guide to Dynamic Template Rendering
Twig is a powerful and flexible templating engine for PHP, known for its clear syntax and extensibility. In this blog post, we’ll dive into a practica...
Raza Umer
Empowering businesses with seamless ecommerce solutions on Opencart
read more ⟶
Leave a comment
Note: HTML is not translated!