Cuando una decidimos abandonar los servicios de hosting normales o básicos y damos el salto a servicios de hosting con mayores prestaciones como puede ser un servidor dedicado virtual o un servidor dedicado, suelen surgir problemas que en la mayoría de las ocasiones desconocemos. Nuestro flamante servidor recién adquirido es lento o bien no termina de funcionar.
Ante esta situación, el primer paso que se da es acudir al servicio técnico, pero dependiendo de la empresa este servicio puede ser más o menos bueno. Y si no es un problema físico de la máquina (algún componente estropeado o alguna configuración de red mal puesta) nos tocará arremangarnos las mangas y ponernos manos a la obra para solucionar los problemas que podamos tener.
A continuación os contaré uno de los problemas que he experimentado en el servidor dedicado que aloja a Planeta Red y la solución…
Antecedentes
A partir de una determinada hora el servidor tarda mucho tiempo en cargar alguna de las páginas del blog, llegando en ocasiones a demorarse varios minutos la carga completa de una de las páginas del blog.
Informé del error al soporte técnico y ellos me indicaron que posiblemente fuera un problema relacionado con la directiva MaxClients de Apache. El valor de dicha directiva podía ser muy bajo y hacer que el servidor tuviera esos problemas de lentitud.
Mediante un script ( http://whos.amung.us/ ) pude saber cuantos usuarios online había, es decir, pude conocer el número de personas que están conectados a la vez al blog. Un dato que será importante conocer.
Configurar un Servidor dedicado
Para conocer el número máximo de clientes que admite Apache, debemos editar el fichero httpd.conf y buscar la directiva MaxClients entre los muchos datos que veremos.
¿Donde se encuentra el archivo httpd.conf?
En algunas configuraciones de Apache este archivo puede venir vacío, pero esto no debe echarnos para atrás ya que podemos encontrar la configuración de Apache en un archivo llamado apache2.conf que se encuentra en la siguiente ruta:
/etc/apache2/apache2.conf
¿Como editar el archivo apache2.conf?
La respuesta es sencilla, mediante una conexión ssh. La mayoría de los servicios de hosting basados en servidores dedicados o servidores dedicados virtuales nos ofrecen la posibilidad de conectarnos mediante el uso de un protocolo seguro (protocolo ssh). Sólo tendremos que revisar los datos de configuración y encontraremos los datos necesarios para conectarnos (nuestro login / password y la dirección del servidor).
Para realizar una conexión ssh si usamos Windows podemos usar un programa llamado PuTTY.Si usamos Ubuntu (mi caso) nos bastará el terminal.
Para conectarnos por ssh escribimos:
ssh usuario_remoto@host_remoto
Donde cambiamos usuario_remoto por nuestro usuario (por lo general será root o admin) y host_remoto por la dirección del host (dirección del servidor) al que queremos acceder
Nos pedirá la clave y si todo va bien, estaremos dentro de nuestra máquina.
Para editar el archivo apache2.conf escribimos en este terminal:
nano /etc/apache2/apache2.conf
En vez de nano podemos usar otro editor como Vi pero personalmente prefiero este al ser algo más amigable.
Tras escribir la orden anterior la ventana cambiará y veremos el contenido del archivo que estamos editando. Sólo nos queda buscar dentro la directiva MaxClients dentro del módulo que tengamos cargado.
El resultado en mi caso fue el siguiente:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
Comandos del servidor Apache
En la configuración del servidor del servidor dedicado es interesante que conozcamos algunos datos sobre él, como por ejemplo la versión que se ejecuta y que módulos están cargados.
Para conocer la versión únicamente tenemos que escribir en la consola remota el siguiente comando:
/usr/sbin/apache2 -v
Cuya salida será algo similar a esto:
Server version: Apache/2.2.3
Y para conocer los módulos cargados:
/usr/sbin/apache2 -l
Cuya salida será algo similar a esto:
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
De esta manera sabemos que estamos ante un servidor Apache / 2.2.3 y en modo prefork.
Otros comandos interesantes de conocer son los siguientes:
Reiniciar Apache:
# sudo /etc/init.d/apache2 restart
Parar/Arrancar Apache:
# sudo /etc/init.d/apache2 stop
# sudo /etc/init.d/apache2 start
Bueno no me aparto más del punto donde lo dejamos. Tras salir del editor nano, el siguiente paso fue conocer cuantos procesos apache se estaban ejecutando y la cantidad de memoria RAM de la máquina que se estaba consumiendo.
Para conocer estos datos tan sólo tenemos que escribir la siguiente orden:
ps -ylC apache2 --sort:rss
Esto nos da un listado (más o menos largo en función de los usuarios conectados en el servidor).
Y el resultado fue el siguiente:
Z 33 14720 3802 2 80 0 0 0 exit ? 00:00:10 ap
S 33 3803 3802 0 80 0 4636 36821 poll_s ? 00:00:00 apache2
R 33 15276 3802 3 80 0 13288 62996 – ? 00:00:00 apache2
R 33 15226 3802 1 80 0 13380 63000 – ? 00:00:00 apache2
[……..]
R 33 14692 3802 3 80 0 70972 76935 – ? 00:00:14 apache2
R 33 15001 3802 1 80 0 71828 77048 – ? 00:00:03 apache2
R 33 14862 3802 1 80 0 71932 77448 – ? 00:00:05 apache2
El número total de líneas nos indica el numero de procesos y el valor que os pongo en negrita el tamaño mínimo y máximo de los procesos Apache.
Un proceso Apache de 70MB puede ser indicativo de que algo algo raro ocurra.
Tocaba investigar que podía ocurrir…
Archivos de Logs de Apache
Para saber que ocurría realmente nos tocaba sumergirnos aún más en las tinieblas de los logs….pero bueno la experiencia no resultó demasiado traumatica.
Editamos los logs con el siguiente comando:
nano /var/log/apache2/error.log
Y nos encontramos con que aparecía en multitud de ocasiones el siguiente error:
Premature end of JPEG file
gd-jpeg: JPEG library reports unrecoverable error: Bogus DQT index 15
Investigando en internet descubrí que el error era originado por una librería gráfica que uso en el theme actual del blog.
imagecreatefromjpeg() : gd-jpeg, libjpeg: recoverable error: Premature end of JPEG
El problema ocurre con PHP 5 y gd2.
Como arreglar este problema:
PHP 4 : No hace falta hacer nada
PHP 5.0 – 5.1.2 = Actualizar a la última versión de PHP 5
PHP 5.1.3 – última versión = Declaramos esta variable en el fichero php antes de realizar la llamada a la función imagecreatefromjpeg()
ini_set(‘gd.jpeg_ignore_warning’, 1);
Bueno este es el primer paso en la configuración del servidor dedicado….pero la historia no termina aquí.
Continuará….
Saludos desde lo más profundo de los bytes.
Hola
Soy peruano y buscando experiencias con empresas de servidores dedicados llegué a tu portal y me parece importante para mis intereses lo escrito en tu post. Mira estoy creando un negocio para poder brindar servicio de hosting y reseller en el Perú y quiero que el servicio sea satisfactorio para mis clientes es por eso que te pregunto, de acuerdo a tu experiencia con qué proveedor o proveedores me recomendarías trabajar? Espero que me puedas ayudar en este tema para poder decidirme por una empresa seria y con un soporte seguro. Desde ya te doy las gracias por tus recomendaciones.
Saludos.
Fernando.