Crash with many sites

Hi, I use MainWP for many sites (around 1500). I have a problem when I want to delete plugins.
I have a plugin to delete on 200 sites.
I check all the boxes and do the “delete” bulk action.
But it doesn’t work, the screen remains blocked.
When I perform this operation 30 sites after 30 sites it works. How to lift the limit? Is there a particular configuration to put in place when there are many sites to manage at the same time?

Hey @shenron

Welcome to the MainWP community!

We don’t impose any limits on the number of sites for such bulk operations, so this is likely caused by the limited server resources.

When you try to delete a plugin on 200 sites, what exactly do you mean by “screen remains blocked”?
Is there a loading animation that runs for a long time, and if so, for how long did you let it run? Or something else entirely?

Secondly, can you please post the community system report from your MainWP Dashboard for review? The report is located in your Dashboard under Info → Server, on the top right of the page.

Be sure to use the button like the one below; this button hides all your private information:

image

Pressing the button auto-copies the report to your clipboard then just paste it in a reply here.

### WordPress Check                Obligatoire                                            Détecté                                      État     ###

MultiSite Disabled                 =true                                                  true                                         Ok          
Méthode fichier système            = direct                                               direct                                       Ok          
WordPress Memory Limit             >=64M                                                  40M                                          Avertissement
WordPress Version                  >=6.2                                                  6.6.1                                        Ok          

### PHP                            Obligatoire                                            Détecté                                      État     ###

cURL Extension Enabled             =true                                                  true                                         Ok          
cURL Timeout                       >=300 seconds                                          300                                          Ok          
cURL Version                       >=7.18.1                                               7.74.0                                       Ok          
Extensions PHP chargées            Indisponible                                           Core, FFI, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, bcmath, calendar, cgi-fcgi, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, geoip, gettext, hash, iconv, imagick, imap, intl, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcntl, pcre, pdo_mysql, posix, readline, session, shmop, soap, sockets, sodium, ssh2, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, xml, xmlreader, xmlwriter, xsl, zip, zlib            
Fonctions PHP désactivées          Indisponible                                           , pcntl_alarm, pcntl_async_signals, pcntl_exec, pcntl_fork, pcntl_get_last_error, pcntl_getpriority, pcntl_setpriority, pcntl_signal, pcntl_signal_dispatch, pcntl_signal_get_handler, pcntl_sigprocmask, pcntl_sigtimedwait, pcntl_sigwaitinfo, pcntl_strerror, pcntl_unshare, pcntl_wait, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifcontinued, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig,            
OpenSSL Version                    >=OpenSSL/1.1.0                                        OpenSSL/1.1.1w                               Ok          
OpenSSL Working Status             Yes                                                    Yes                                          Ok          
PCRE Backtracking Limit            >=10000                                                1000000                                      Ok          
PHP autorise les URLs fopen        Indisponible                                           OUI                                                      
PHP Max Execution Time             >=30 seconds                                           300                                          Ok          
PHP Max Input Time                 >=30 seconds                                           300                                          Ok          
PHP Memory Limit                   >=256M                                                 1024M                                        Ok          
PHP Post Max Size                  >=2M                                                   256M                                         Ok          
PHP Safe Mode Disabled             =true                                                  true                                         Ok          
PHP Upload Max Filesize            >=2M                                                   256M                                         Ok          
PHP Version                        >=7.4                                                  7.4.33                                       Ok          
SSL Extension Enabled              =true                                                  true                                         Ok          
SSL Warnings                       = empty                                                                                             Ok          
Support PHP Exif                   Indisponible                                           OUI                                                      
Support PHP IPTC                   Indisponible                                           OUI                                                      
Support PHP XML                    Indisponible                                           OUI                                                      

### MySQL                          Obligatoire                                            Détecté                                      État     ###

Encodage client MySQL              Indisponible                                           utf8                                                     
Mode MySQL                         Indisponible                                           ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION            
MySQL Version                      >=5.0                                                  10.5.23-MariaDB-0+deb11u1-log                Ok          

### Configuration serveur          Valeur détectée                                     ###

Agent utilisateur                  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Architecture                       64         bit                                         
Connexion automatique du serveur   La réponse au test est positive.                       
Contenu accepté                    text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
HTTPS                              OUI                                                    
Interface de passerelle            CGI/1.1                                                
Jeu de caractère accepté pour le contenuIndisponible                                           
Logiciel du serveur                Apache                                                 
Protocole du serveur               HTTP/2.0                                               
Système d'exploitation             Linux                                                  
Temps de la requête                1721897122                                             
Utilisation de la mémoire          6.94 MB                                                

### MainWP Dashboard Settings      Valeur détectée                                     ###

Basic uptime monitoring enabled    Oui                                                    
Délai minimum entre les requêtes   20                                                     
Délai minimum entre les requêtes vers la même IP20                                                     
MainWP legacy backups enabled      Non                                                    
Nombre maximal de pages à retourner                                                       
Nombre maximal de requêtes d’installation et de mise à jour simultanées20                                                     
Nombre maximal d’articles à retourner50                                                     
Nombre maximum de requêtes de synchronisation simultanées20                                                     
Number of connected sites          1330                                                   
Optimize data loading              Oui                                                    
Plugin advanced automatic updates enabledOui                                                    
Requêtes simultanées maximum       20                                                     
Requêtes simultanées maximum par IP20                                                     
REST API enabled                   Oui                                                    
Site health monitoring enabled     Oui                                                    
Système de sauvegarde principale   API Backups                                            
Theme advanced automatic updates enabledOui                                                    
Tolérance d’abandon des extensions/thèmes365                                                    
Utiliser WP Cron                   Oui                                                    
Version de MainWP Dashboard        Latest: 5.1.1 | Detected: 5.1.1 Ok                     
WP Core advanced automatic updates enabledOui                                                    

### Extensions                     Version                                                Licence                                      État     ###

Aucune extension installée         

### Extension                      Version                                                État                                      ###

Akismet Anti-spam: Spam Protection 5.3.3                                                  Inactif                                      
Hello Dolly                        1.7.2                                                  Inactif                                      
MainWP Dashboard                   5.1.1                                                  Actif                                        

When you try to remove a plugin on 200 sites, what exactly do you mean by “the screen gets stuck”?
Capture d’écran 2024-07-25 à 10.50.51

WordPress Memory Limit

I see a couple of improvements, although I’m not sure if they would solve this.

  1. Increase the WP_MEMORY_LIMIT to 256M (now 40M), by adding the following line to wp-config.php:
    define( 'WP_MEMORY_LIMIT', '256M' );
  2. Upgrade PHP from 7.4 to 8.2
  3. Remove the (inactive) plugins Akismet and Hello Dolly.

And I see that the advanced settings seem to be quite different than the default, so that might cause some trouble. Try the default values first and if that works you can try to tweak them a bit to your environment. These are my settings:

1 Like

To add to @josklever good suggestions, I would recommend increasing WP Memory Limit even further to 1024MB or even 2048MB considering you’re managing 1330 sites.
I’d also recommend increasing PHP Max Execution Time and cURL Timeout to 600-1200.

As for the values in the Advanced Settings, I would recommend setting them to default to test if the bulk operation is working as expected.

After that, you can try increasing some of the values to speed up the process.

I can’t get this addition to take into account (I had already added this in wp-config.php):

And I see that the advanced settings seem to be quite different than the default, so that might cause some trouble. Try the default values first and if that works you can try to tweak them a bit to your environment. These are my settings:

I modified these settings to try to solve my problem but it didn’t work. I reset the values ​​to default but it’s not any better.

I would recommend increasing the WP memory limit even further to 1024 MB or even 2048 MB, given that you manage 1330 sites.
I would also recommend increasing PHP max execution time and cURL timeout to 600-1200.

I passed WP_MEMORY_LIMIT to 2048 mais cela n’est pas pris en compte dans “Informations”.

Php 8.2

default_socket_timeout = 1200
max_execution_time = 1200

@shenron, you’ve added the line at the end of the files, but you should move it up a bit, before the line
/* That's all, stop editing! Happy publishing. */
Otherwise the default value of 40M is already set via wp-settings.php

indeed this is now taken into account. THANKS.

However, still unable to bulk delete. For example, I’m trying to delete the inactive “Hello Dolly” extension on 664 sites. Loading is not successful.

1 Like

To dig a bit deeper, could you provide more information on a few specifics?

  1. After how many seconds does the process stall when you try to bulk delete the plugins? Sometimes, if it takes around 60 seconds, there could be an underlying server-side limitation being hit.
  2. Are there any error messages or warnings in the browser console during this process? These can often give us clues about what’s going wrong.

Additionally, it might be worthwhile to check with your hosting provider.
Many hosts have hidden rules and limits that aren’t immediately visible to users. Asking them to review the server logs could help identify if the CPU, memory, or another resource is being maxed out during the bulk delete operation.

Given that the process works for smaller batches but fails on larger ones, it strongly suggests hitting a limit rather than a bug. Since managing servers isn’t typically in our wheelhouse, your host’s support team might be the best resource to pinpoint and adjust any restrictive settings.

The process doesn’t actually hang. When I click “Apply” after selecting all sites to remove a plugin, it keeps loading indefinitely.

Capture d’écran 2024-07-25 à 10.50.51

There is no error message in the console.

MainWP is installed on my dedicated server. The resources are largely sufficient I think (RAM = 32G)

I will continue to look for where the problem comes from but I have not found anything in the server logs either :frowning:

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.