• Aviso Legal
  • About

Bienvenidos al Blog de David Rodriguez

Tag Archives: Apache

Error 503 service unavailable y como solucionarlo optimizando php-fpm

noviembre 23, 2016 4:37 pm / Leave a Comment / David Rodriguez

Si te encuentras algunas caidas de tu servidor con el error 503 service unavailable, es un error dificil de ver de donde viene.
Lo primero es detectarlo, y podemos buscar en las urls del fichero de apache access_log para ver si hay paginas que responden 503.
> grep » 503 » access_log

y podemos ver algunas lineas
[21/Nov/2016:23:04:23 +0100] «GET /url HTTP/1.0» 503 8593 «-» «Mozilla/5.0 (compatible; AhrefsBot/5.1; +http://ahrefs.com/robot/)»

donde vemos que esa petición al servidor nos responde un error 503 service unavailable.

Esto nos quiere decir que estamos teniendo problemas de carga.

Yo lo primero que suelo mirar es la carga de la Base de datos. Si tienes configurado el fichero de consultas mysql lentas, se puede ver si hay alguna que podamos optimizar poniendo algún índice.

> more /var/log/mysql-slow-queries.log

Tambien deberemos optimizar la configuración de la base de datos configurando el fichero my.cnf

 Lo siguiente es ver si la configuración de las peticiones apache están correctamente configuradas. Si es el caso que tienes plesk y tienes instalado un servidor apache con PHP-FPM, puedes ver la configuración php que tienes y ver si hay algún problema.

Mira el fichero de log

more /var/log/php-fpm/error.log

En este caso hemos encontrado indicios que aquí estaba el problema

WARNING: [pool dominio.com] server reached max_children setting (5), consider raising it

Vamos a configurar los parametros para que acepte más peticiones según la memoria que tengamos en el servidor

1.- Creamos un fichero php.ini

vi /var/www/vhosts/system/cursosmarcablanca.com/conf/php.ini

Donde configuramos los siguientes valores

[php-fpm-pool-settings]

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 5

pm.max_spare_servers = 35

¿como calculamos estos valores? Yo hice el calculo que dicen en esta pagina

No utilices toda la RAM de la maquina, sino bastante menos porque el resto de procesos tambien ocupan memoria.

2.- Ponemos el siguiente comando para guardar esa configuración

> /usr/local/psa/bin/php_settings -u

3.- En el administrador de plesk, te vas a Dominios > dominio.com > Configuración PHP y pulsas en Aplicar.

Si tienes otras versiones de Plesk, puedes seguir los pasos descritos en la página oficial de Plesk sobre como cambiar la configuración del pool de PHP-FPM

De esta forma, el uso de memoria en tu servidor va a ir como la seda.

Posted in: servidores / Tagged: apache, linux, php

Como descubrir un ataque de SPAM en un servidor Linux

noviembre 11, 2013 6:43 pm / 1 Comment / David Rodriguez

Si notas que tu correo se recibe lentamente, que pasa tiempo desde que envias un email, hasta que lo recibes puede que tengas la cola de correo colapsada por un ataque de SPAM.

Lo más importante en estos casos, es comprobar que efectivamente tienes un ataque de SPAM. Para ello comprueba la cola de correo de su servidor. Si utilizar Qmail, un programa muy comodo para conocer esto es el programa qmHandle. Ya comenté en otro post, como descargarlo y los parametros a utilizar http://blogdavidrodriguez.piensaennaranja.com/2013/07/23/borrar-algunos-correos-de-la-cola-de-qmail/

Nos situamos en el directorio donde hemos descomprimirdo qmHandle, y lo ejecutamos:

> ./qmHandle -s

Nos da una respuesta parecida a esta:

Total messages: 1500

Messages with local recipients: 0

Messages with remote recipients: 1500

Messages with bounces: 0

Messages in preprocess: 0

Podemos ver que tenemos 1500 mensajes en cola. Con el siguiente comando, podemos ver las cabeceras de los correos que están en la cola de correo de Qmail.

>./qmHandle -l

801681 (16, 16/801681)

Return-path: [email protected]

From: PagSeguro <[email protected]>

To: [email protected]

Subject: Atualiza?ao automatica do Sistema de Seguran?a Pagseguro.

Date: 11 Nov 2013 17:29:02 +0100

Size: 886 bytes

……

Efectivamente, estamos viendo que se están enviando correos de SPAM desde nuestro servidor. Ahora lo más importante es borrar esos correos de la cola de correo, y encontrar el agujero por el que han entrado.

Para borrar los correos de la cola de correo, seguimos utilizando el programa qmHandle con una parte del asunto,

>./qmHandle -SPagseguro

Le estamos diciendo que borre todos los mensajes de la cola de correo que tienen en el asunto PagSeguro

Una vez hemos borrado la cola de correos, nos que da la tareas más ardua y penosa. Encontrar por donde han metido el codigo malicioso y tapar el agujero. Mi consejo, es que si en ese servidor tienes algún CMS tipo WordPress, Magento, Joomla, etc .. empieces por esos dominios actualizando los CMS a la ultima versión.

Hay que analizar los correos que se envian, con cualquier correo que se devuelva porque el correo no existe lo podemos analizar las cabeceras. Lo abrimos en cualquier cliente de correo y le damos a «ver código fuente».

Return-Path: <[email protected]>
Received: (qmail 15479 invoked by uid 502); 11 Nov 2013 17:31:04 +0100
Date: 11 Nov 2013 17:31:04 +0100
Message-ID: <[email protected]>
To: [email protected]
Subject: Atualizaçao automatica do Sistema de Segurança Pagseguro.
X-PHP-Originating-Script: 10012:FaillureCorp.Org_BB_Empresa.php
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: PagSeguro <[email protected]>

Analizando las cabeceras, podemos saber, por ejemplo, el uid que ha enviado el mail.
> grep 502 /etc/passwd

psaftp:x:501:502:anonftp psa user:/:/sbin/nologin
apache:x:502:503:Apache server:/:/sbin/nologin

En ese caso, podemos ver que ha sido el usuario apache el que ha lanzado el email … pero podríamos saber desde qeu dominio o servicio se podría haber mandado.

Analizando más a fondo las cabeceras, podemos ver el fichero que ha lanzado ese email

X-PHP-Originating-Script: 10012:FaillureCorp.Org_BB_Empresa.php
Vemos que ha sido lanzado por un fichero php, aunque tambien puede que haya sido algún cgi, perl, python, etc.
Ahora buscamos ese archivo en nuestro servidor
> find / -iname *Org_BB_Empresa.php
y tenemos que encontrar la ubicación de ese fichero.
Borrarlo y ya tendremos el fichero eliminado. Para que no vuelvan a crearlo, lo más normal es que hayan encontrado alguna contraseña FTP del dominio donde estaba alojado ese fichero.
Muy importante cambiar todas las contraseñas de ese dominio, y por supuesto, la de root del servidor.
Habremos solucionado el problema de SPAM. Siempre es recomendable actualizar todos los servicios que se estén utilizando en el servidor, para evitar agujeros de seguridad.

 

 

Posted in: Seguridad, servidores, SPAM / Tagged: apache, linux, spam

Error en plesk mod_fcgid: read data timeout in 45 seconds

octubre 4, 2013 10:55 am / 1 Comment / David Rodriguez

Si obtenemos el siguiente error en el archivo error.log del dominio y la pagina del navegador te da el siguiente mensaje de contacte con el Administrador,para solucionarlo tenemos que hacer lo siguiente.

Si lo queremos hacer para todos los dominios del servidor, podemos añadir un fichero a la configuración de nginx

> vi /etc/nginx/conf.d/nombre.conf

y añadimos en este fichero

<IfModule mod_fcgid.c>
ProcessLifeTime 7200
IPCCommTimeout 7200
IPCConnectTimeout 300
</IfModule>

 

Guardamos el fichero y reiniciamos el servicio nginx

> service nginx restart

De esta forma ya lo tendriamos solucionado.

Si solo lo queremos hacer para un dominio de todos los que tenemos configurados en el servidor, ya que estamos utilizando plesk, añadimos un fichero al siguiente directorio:

> vi /var/www/vhosts/tudominio.com/conf/vhost.conf

y añadimos lo mismo de antes

<IfModule mod_fcgid.c>
ProcessLifeTime 7200
IPCCommTimeout 7200
IPCConnectTimeout 300
</IfModule>

Guardamos y reconstruimos ese dominio.

/usr/local/psa/admin/bin/httpdmng –reconfigure-domain tudominio.com

Finalmente reiniciamos el apache.

> service httpd restart

 

De esta forma, ya tendriamos este error en plesk solucionado.

Puedes ver que hacen estas opciones en tu servidor mirando la configuración oficial de apache

http://httpd.apache.org/mod_fcgid/

Posted in: Internet, Programacion, servidores / Tagged: apache, plesk, Programacion

Optimizar wordpress para no sobrecargar el servidor web

diciembre 26, 2012 2:04 pm / Leave a Comment / David Rodriguez

Os dejo algunas pautas para que no sobrecarguemos nuestro servidor web, si en él tenemos instalado un WordPress.

  1. Asegurate que tienes actualizado el WordPress y los plugins que utilizas.
  2. Limita la utilización del wp-cron.php
    Añade la siguiente linea en tu wp-config.php
    define(‘DISABLE_WP_CRON’, true);
    y lanza los cron que necesites como una tarea normal
    wget -O /dev/null http://www.tupagina.com/wp-cron.php?doing_wp_cron
  3. Limita las revisiones para que  la carga de contenido en la base de datos sea menor
    Añade las siguientes lineas en tu wp-config.php
    define (‘WP_POST_REVISIONS’, 0);
    define(‘AUTOSAVE_INTERVAL’, 600);
  4. Limita los accesos de muchos robots que no te interesen.
    Puedes limitar el acceso a los siguientes robots:

2 CareerBot/1.1;
3 spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)»
8 YandexBot/3.0;
10 AhrefsBot/4.0;
10 bingbot/2.0;
13 MJ12bot/v1.4.3;
13 spbot/3.1;
17 Baiduspider/2.0;
57 Ezooms/1.0;
92 (+http://www.moreover.com;

Espero que de esa forma, el uso de cpu de vuestro servidor se minimice considerablemente.

Posted in: Programacion, servidores / Tagged: apache, Programacion, robots, SEO, wordpress

calcular el valor de maxclients en la configuracion de apache

octubre 25, 2012 5:18 pm / 4 Comments / David Rodriguez

Para calcular el valor del parametro MaxClients en Apache, tenemos que conocer la siguiente formula:

MaxClients = Total de la RAM del Servidor en MB / Tamaño de un proceso Apache

 

Para calcular lo que ocupa en memoria un proceso de apache de tu servidor utilizamos el siguiente comando:

> ps -ylC httpd

procesos apache1

procesos apache1

Y vemos que la columna SZ (Size) te dice el tamaño de cada petición apache. En este caso podemos ver qeu aproximadamente son 70M.

Vemos ahora mismo las peticiones Apache que tenemos actualmente:

> lsof -i | grep httpd | grep ESTABLISHED | wc -l

numero de procesos apache

Podemos sacar una media calculando este valor en distintas horas del día, o coger el valor máximo para saber el uso de memoria maximo que podemos tener.

En este caso, voy a coger el valor máximo en este periodo de tiempo que son 19 peticiones.

Y podemos calcular:

Memoria RAM usada por Apache = 19 * 70M = 1330 M

Ahora ya podemos calcular el MaxClients para un servidor con 4G de memoria RAM

MaxClients = 4.000M / 70M = 57

Esta claro que este servidor sería un claro ejemplo para optimizar los procesos Apache, eliminando módulos que no se utilicen para optimizar el servidor web.

Para curarte en salud, se recomienda dejar un 20% de memoria para los procesos del sistema. Con lo que la formula final sería

MaxClients = Total de la RAM del Servidor en MB * 80% / Tamaño de un proceso Apache

 

Posted in: Internet, Otros, servidores / Tagged: apache, linux, servidor web

saber el numero de conexiones http al puerto 80 en linux

marzo 11, 2011 3:52 pm / Leave a Comment / David Rodriguez

Con este comando:
netstat -nt | grep :80 | wc -l
Podemos conocer el numero de peticiones http que está recibiendo el puerto 80, que es el puerto web por defecto

Posted in: Internet, Programacion, servidores / Tagged: apache, linux, servidores

httpd.conf con plesk: modificar configuracion apache

marzo 9, 2011 3:45 pm / Leave a Comment / David Rodriguez

Para modificar algunos parametros de apache con plesk, hay que introducirlas en el fichero
/etc/httpd/conf.d/swtune.conf
que sobreescribe al fichero /etc/httpd/conf/httpd.conf

Posted in: Internet, Programacion, servidores / Tagged: apache, linux, plesk

Categorias

  • Base de datos
  • Empresas
  • Internet
  • Mac
  • marketing
  • Otros
  • Prensa
  • Programacion
  • Redes Sociales
  • Retos deportivos
  • Seguridad
  • SEO
  • servidores
  • SPAM
  • Uncategorized
© Copyright 2025 - Blog de David Rodriguez