Introduccion
Al trabajar con WordPress una situación a la que puedes llegar es que ingreses a la pagina y se demore en cargar o que no cargue.
Ante esto lo tipico como Sysadmin vas a proceder a revisar las métricas típicas del servidor como el consumo de CPU, memoria RAM o Load Average, al hacer esto vas a observar que hay un consumo alto de CPU y memoria RAM
Cuando empiezas a depurar los proceso que se están ejecutando observas que el mayor consumo esta dado por apache, php o nginx dependiendo del tipo de despliegue sin embargo se hace claro que hay un problema con WordPress.
Como administrador del sitio depuras el sitio, revisas los plugins de cache, pruebas los plugins para comprobar si hay alguno que presenta error o mal funcionamiento, recargas cache, pruebas varios plugins de cache y no encuentras nada.
He pasado por esta situación y tras un tiempo de investigar y buscar posibles causas encontré que este problema esta relacionado a respuestas 404 y accesos no autorizados, en mayor parte debido a campañas de SEO o bots que consultan paginas que no existen, cambiaron o que están.
Debido a la cantidad de URLs que va a rastrear y la cantidad de llamadas que realiza el o los bots, termina con el sitio respondiendo con una velocidad muy lenta o incluso inhabilitando el sitio.
Seguimientos
Como seguimiento que se puede realizar en el sitio se puede verificar dos datos, el log del servidor web (Apache, Nginx …) y buscar las peticiones con codigo de respuesta 4xx y comparalo con las metricas historicas de CPU y memoria RAM
Otra opcion es usando WP SuperCache, activando el modo de depuracion el cual va a registrar un log, este log es el que vas a revisar y comparar los consumos
Posibles soluciones
Manejo de accesos a archivos no existentes
Dentro del .htaccess agrega lo siguiente
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg
|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc
|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|
m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf
|png|pot|pps|ppt|pptx|ra|ram|rar|swf|tar|tif|tiff|wav|wma|wri|
xla|xls|xlsx|xlt|xlw|zip)$ [NC]
RewriteRule .* – [L]
Acceso a URLs que no existen
Dentro del .htaccess agrega lo siguiente
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} www\.facebook\.com/plugins [NC]
RewriteRule .* 404.html [L,R=404]
Esto va a resultar en que si se esta accediento a a “www.facebook.com/plugins” emita directamente la respuesta 404 sin cargar WordPress, mejorando la velocidad de respuesta y disminuyendo la carga en el servidor.
Referencias
https://mywifequitherjob.com/speed-up-wordpress-and-reduce-server-load/
https://www.elementpack.pro/how-to-fix-the-404-error-in-wordpress-and-improve-speed/
https://medium.com/@jayaprakashaadhira/a-complete-guide-to-wordpress-error-404-pages-ac9041e84350