Para los que no pueden separarse de internet
Web
Mi última pesadilla: Optimizar el VPS para WordPress
6 ago
Pesadilla… de tres semanas y pico. Anoche soñé con la lista de procesos del comando top de Linux. Apache consumía cada vez más y más memoría. Por consumir, consumió el Kernel de Linux y se transformó en el Kernel de Windows. Y no se porqué antes de despertarme entre sudores fríos apareció Bill Gates descojonandose a moco tendido. Dios, ¡Qué imagen!, no se me quita de la cabeza.
Durante este tiempo me he didicado a “intentar” optimizar tanto el VPS como WordPress para reducir el consumo de memoría. Aunque he hecho algunas mejoras (pocas por desgracia) sigue cayendose Apache; pero comenzaré por el prinicpio:
¿Porqué un VPS?
- Por el precio: Ví un VPS más o menos al mismo precio que un hosting y apliqué el dicho “burro grande ande o no ande”.
- Por aprendizaje: Nunca había probado un VPS y quería saber como poder administrarlo, que se puede hacer con él. No jodes tantas cosas como con un dedicado y hasta cierto punto tienes menos responsabilidad y es mucho más barato. Y es el paso lógico antes de administrar un dedicado, en el que ahí estas solo completamente.
- Por unificar mis proyectos web: Dispongo de cinco dominios. Para cada uno tengo planes para crear una web con ellos,o en algunos casos ya está creada y online, en otro, estoy esperando a ver que pasa con el VPS y otros solo estan proyectados. Disponer de todas las webs en un solo servidor, ya que no tienen muchas visitas, es muy pero que muy cómodo, además de económico.
- Por ahorar costes: Cinco dominios, cinco hostings. Aunque los hay muy baratos (desde un euro) siempre te limitan alguna cosa y no me convencian.
- Por libertad: La posibilidad de hacer y deshacer a mi antojo, en definitiva, de tener el control de la máquina (virtual) es una gozada.
Características del VPS
- Memoría RAM: 256 MB
- Espacio en disco: 5 GB
- Transferencia mensual: 150 GB
- Sistema operativo: CentOS 5
- Panel de control: Plesk
- Y obviamente el resto de características habituales: Perl, PHP, MySQL, etc, etc, etc.
El principio
Cuando contraté este VPS, era un puto ignorante, así de claro, desconocía muchas cosas sobre la administración de servidores, su optimización, y sobre todo, las características que había que observar detenidamente antes de contratar nada (en VPS. En hosting, tengo bastante idea). Menos mal que era el más barato xD.
Desde el tercer o cuarto día comenzó a fallar Apache. Los datos que obtenía tanto de Plesk como de Virtuozzo me indicaban que la memoría se saturaba y paraba los servicios. Claro, como un ignorante creé un ticket al proovedor. La respuesta fué rápida (y ahora la más lógica), “actualice su VPS a uno superior”. No comprendía como me podían decir eso. ¡Que sólo es un blog! ¡Que el día que llega a 100 visitas monto la fiesta padre! !Coño, que no es Digg, ni el Mundo! ¿Cómo podía ser que con solo al acceder a la página principal de la administración (el escritorio de WordPress), Apache ya se viniese abajo? ¿Cómo era posible?.
Sólo había una idea en mi cabeza: “Estos del hosting quieren sacarme más pasta” (Viendolo ahora, en cierto sentido, tenía razón). Pero esa idea no soluciona el problema, aunque mi cabezonería la convirtió en mantra y como con levantar Apache o reiniciar el contenedor volvía todo a funcionar, se quedo así durante meses.
Primeros intentos
No soy una persona que se rinda fácilmente. Yo siempre digo que en informática no hay nada imposible, sino poco presupuesto. Así que comencé a informarme sobre VPS, WordPress, Apache, etc. De esto puede dar fe mi navegador (uso Opera) que ahora mismo tengo abiertas unas 50 pestañas.
Lo primero fue buscar una forma para averiguar cuánta memoría consumía WordPress. Encontré el siguiente código:
$memoria_usada = round(memory_get_usage(1) / 1024,1);
echo ‘Memoria usada: ‘ . round(memory_get_usage() / 1024,1) . ‘ KB de ‘ . $memoria_usada . ‘ KB’;
Este código indica la memoría que había antes de ejcutar el script (que se guarda en la variable $memoria_usada y se pone al inicio del archivo) y la memoría consumida después de ejecutar el script (que se pone al final). Los datos en local que saqué fueron los siguientes:
9 plugins: Memoria usada: 27462 KB de 67.1 KB
Sin plugins: Memoria usada: 20468.8 KB de 67.2 KB
Actualizando el theme: Memoria usada: 21049.1 KB de 67.1 KB (Utilizando el theme que tengo en el blog actualmente, sustituyendo al theme por defecto)
Siento no tener los datos del VPS, pero no varían mucho. Ahora mismo consume 29,5 MB con ocho plugins activos (no son los mismos plugins han variado desde entonces) más el theme.
Las pruebas las realicé con WordPress 3.0.1 con la base de datos tal cual se instala, bajo Windows con la suit de AppServ sin modificaciones.
Yo, cuando ví las cifras, me quedé alucinado: ¡Wordpress consume casi 20,5 MB!. Realicé pruebas con otras versiones de WordPress para verificar que esto era así, es decir, comprobar que con el paso de las versiones el consumo de memoria había aumentado. Que no era cosa mía, sino que es así de chupón. Aunque aquí puede variar el consumo de memoría dependiendo de las reglas de mod_rewrite de Apache, de como esté optimizado PHP y MySQL, etc. El único culpable no es WordPress, pero acojona.
Viendo lo visto, era hora de actuar.
WordPress a dieta
Sabía que existian varios plugins que permitian cachear las páginas del blog y reducir el consumo de memoria y procesador, pero simpre lo había visto en blogs con miles de visitas, no en uno cutre con theme gratuito que no llega a las cien visitas diarias (triste pero cierto).
El primero en activar en el blog, wp-cache, me costó un poco instalarlo, más por mi inexperiencia con cachés que otra cosa (mira que es sencillito el plugin). Al final no se lo que me paso, no lo recuerdo, que lo desactivé. Busqué otro.
WP Super Cache, no mienten los que hablan bien de él, funciona estupendamente, es un poco más complicado de configurar que wp-cache pero el resultado es magnífico. Pero el blog seguía consumiendo casi 30 MB de memoría y Apache se caía. Mejoró la estabilidad del blog un poco, al menos de cara al visitante sí. Pero seguía con el mismo problema: en cuanto entraba en el Escritorio Apache se escoñaba.
Antes de esto probé cada uno de los plugins para ver cual era el que hacía que Apache se cayera nada más entrar en las administración del blog. WordPress.com Stats era el culpable, la establidiad mejoró sustancialmente teniendo este plugin desactivado. Durante unos días pensé que estaba solucionado el problema, nada más lejos de la realidad. Aunque el blog consumia menos memoría, en cuanto hacía algo que requiriese más esfuerzo por parte de la RAM, Apache se venía abajo. Simplemente con entrar varias veces en el escritorio del blog o activar un plugin, Apache caía. Fue frustrante.
Un plugin del que no conocía su existencia es DB Cache Reloaded. Como su nombre indica, permite cachear las consultas a la base de datos, evitando que se conecte a la base de datos cada vez que haya una petición a esta. Reduce el consumo de recursos. Bien. Activado está y funciona de maravilla, aunque de momento no termina de cachear todas las consultas. Tendré que mirar porqué.
Pero el problema continuaba, Apache se caía. Había que entrar en el servidor.
SSH
Tengo que admitir que no me había conectado nunca a otro ordenador a través de SSH, si a través de VNC y VPNs.
Trabajo con Windows XP SP3 principalmente, pero no le hago ascos a las distribuciones linux, todo lo contrarío: en VirtualBox tengo instalados Debian, CentOS, Ubuntu y ChromeOS, y excepto para el tema de configurar la tarjeta gráfica que aun no he conseguido (creo que VirtualBox es el que no la reconoce y por algún motivo envía al SO una tarjeta gráfica compatible con la que tengo, pero me obliga a estar con una resolución de 800×600).
Bien, ¿porqué cuento esto?. Además de por que quería contarselo a alguien xD, por que así comprenderás que después de varios intentos por conectarme al servidor con varios programitas para Windows, arrancase una máquina virtual para conectarme por la consola de linux. ¡Bendita seas!. Hasta que descubrí que lo que me fallaba era el puerto para poder acceder. ¡La ignorancia da la felicidad!.
Una vez conectado al servidor lo primero que hice fue un top de la máquina para conocer el consumo de RAM (la leche no) en tiempo real.
Me indicaba que tenía 512 MB de RAM total y la memoría consumida oscilaba entre los 170 y los 220 MB, aunque en algunos podía llegar a 270 MB. El problema radica en que el VPS no tiene 512 MB de RAM sino 256 MB; los otros 256 es memoría compartida, con lo que no puedo contar con ella para realizar el cálculo.
También hice un free -m para comprobar la memoria, pero top me ofrece más datos.
Observé que cuando se pide al servidor una página apache ejecuta cuatro procesos de sí mismo llegando en varios casos a consumir un 12 por ciento de memoría RAM. Lo normales un 10 por ciento.
A por Apache
Optimizar Apache. Me costó un huevo y medio encontrar la ubicación de los archivos de configuración, pero cuando me enpeño… (/etc/httpd/conf en CentOS). Bien, leí que si realizaba ciertas modificaciónes en el archivo httpd.conf de Apache podría reducir el consumo de memoría. Por defecto la configuración de Apache era la siguiente:
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
Se quedo así:
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 30
MaxClients 30
MaxRequestsPerChild 40000
</IfModule>
No solucionó mucho, o por lo menos yo no lo noté. Reduje también varios parámetros más, como el tiempo que espera Apache para cerrar una conexión permanente, etc.
Esto seguía sin mejorar. Probemos con la base de datos
MySQL
Poca optimización realicé aquí, la verdad. Me limite a añadir la configuración para habilitar la caché de la BD, pero no ha hecho mucho. También puede deberse a que el plugin de WordPress que cachea las consultas ya lo está haciendo. No sé. La configuración quedo del siguiente modo:
query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 8M
PHP
Para optimizar PHP necesitaba instalar en el VPS Eaccelerator y el Zend Optimizer, mis pocos intentos me han llevado a pensar que no puedo instalar nada que no sea a través de Plesk o que necesite el comando yum. Por tanto, a día de hoy, PHP está sin optimizar, habrá que enviar un ticket a ver si ellos me lo isntalan…
VPS
CentOS consume memoría, como todos los SO, las veces que he podido ver el consumo de memoría sin Apache, está rondaba entre 60 y 80 MB. Pero no sólo es el sistema operativo el que consume RAM, Plesk también consume lo suyo (unos 50 MB), he deshabilitado el antivirus que me consumía 70 MB cada vez que se iniciaba. Pero aunque el VPS se ha estabilizado hay momentos en los que Apache tiene cuatro procesos abiertos de 50-60 MB cada uno (según el comando top). Excesivo.
Intenté crear un archivo SWAP pero el comando swapon no lo tengo permitido, al menos por SSH.
CONCLUSIONES
- Sigo valorando distintas opciones respecto a la optimización del VPS, ahora mismo mi mejor baza es Eaccelerator y que me lo instalen en el VPS para reducir la memoría.
- Seguiré probando con algunnos plugin de WordPress a ver que tal.
- Si estas interesado en la contratación de un VPS andate con ojo con la RAM.
- Me he planteado incluso cambiar de VPS o ampliarlo con la misma empresa o marcharme a otra, ya se verá en septiembre.
- Lo mejor de todo esto: lo aprendido por el camino. No solo conozco un poco mejor los sistemas Linux, sino también Apache, PHP, MySQL y Plesk, y su administración.
- Bueno, ¿Y vosotros?¿Qué experiencia habeis tenido con los VPS?¿Qué consejos podeis darme? o simplemente ¿Qué opinais? Los comentarios son vuestros… mientras Apache lo permita xD.
LINKS
Os dejo unos links y así libero al navegador de carga, pobre.
Optimización del VPS
- Guía de optimización de VPS (Eng)
- ¿Cuánta memoria RAM consume mi servidor?
- Gestiona tu propio servidor VPS: Manual para novatos
- Administracion de VPS
Optimización de WordPress
- Guía de optimización de WordPress 2.8 (Eng)
- Cuidando la base de datos de nuestro WordPress
- Diferentes formas de optimizar el consumo de memoria de WordPress a prueba
- Reduce el consumo de memoria de tu WordPress
- Consumo de memoria y plugins de WordPress
- Cómo conocer el consumo de memoria de tu blog
- La biblia de la optimización de WordPress
- Optimización de WordPress
- Afinando la instalación de tu WordPress
- Recomendación: DB Cache Reloaded para WordPress
Optimización de PHP
- Cómo Instalar Eaccelerator en servidores cPanel
- Problema al instalar eaccelerator
- Reducir el consumo de RAM de WordPress con eAccelerator
- CentOS 5: Instalación de Eaccelerator
Optimización de Apache
SSH en Windows con PuTTy
5 ago
Para poder conectar con un servidor en remoto, habitualmente se usa SSH. Uno de los mejores programas para Windows (ya que la consola de este sistema operativo no permite este tipo de conexion) es Putty.
Os dejo el link de descarga y un tutorial que os indicará como cofigurarlo para poder conectar remotamente a un servidor:
Instalar PEAR desde WAMP + Bonus track: instalar Symfony desde PEAR
30 jul
Hace tiempo que quería crear un post explicando con instalar PEAR en wamp, y además, desde hace unos meses, crear otro explicación como instalar Symfony desde PEAR. y hoy navegando un poco por la red, he encontrado dos fabulosos tutoriales que explica a la perfección estos dos temas. Así que, sin más preambulos, os dejo los links a estos dos geniales post:
#libranda: Plataforma de distribución de ebooks… o algo así
17 jul
Sí, porque ya al entrar en su web (libranda) lo primero que te encuentras son libros, cuando, siendo una plataforma de distribución digital, debería indicar la forma de poder insertar su catálogo en las webs interesadas, información que no aparece por ningún lado. Aunque puedo suponer, (y viendo que la web está realizada con asp.net) que muy probablemente utilicen bases de datos SQL Server y SO Windows en sus servidores, utilizando muy probablemente algún sistema parecido al que se utilizan en las pasarelas de pago de los bancos (utilizan un .exe) para realizar las comunicaciones con las tiendas. Aunque si han sido inteligentes utilizarán un sistema más simple que con enviar a libranda un código que identifique la tienda y el id, isbn, u otro código que identifique el artículo/s puedan ser descargados.
Como ya se ha comentado en los días posteriores a su lanzamiento, libranda tiene muchos fallos, no repetiré lo que otros ya han dicho sobre el DRM, que por cierto, ya se puede saltar; ni sobre la mala campaña de comunicación, ni sobre los pocos libros con los que ha salido al mercado, ni sobre los precios que las editoriales han puesto a algunos libros. Me gustaría darle un punto más técnico al artículo, intentando conocer (o más bien suponer) como funciona esta plataforma de distirbución y que problemas técnicos van a tener.
WEB
Libranda es una distribuidora de libros digitales y su web la zona que ofrece información sobre cómo se distribuyen esos libros, quienes pueden venderlos, las licencias que ofrecen, formatos disponibles, etc. Es decir, información sobre la plataforma de distribución, no sobre los libros; no al menos de una forma tan visible como está actualmente.
Siguiendo la idea anterior, la sección que muestra las tiendas no debería estar, probablemente ni existir, ya que el objetivo de la web no debe ser redireccionar usuarios, sino dar información a los libreros sobre el funcionamiento de la plataforma. Lo mismo ocurre con el catálogo de libros. Sí lo veo necesario que exista, para que cualquiera pueda consultarlo, pero no necesariamente tan visible, al menos no en la página principal.
La sección “¿Qués es Libranda?” sería la que pondría como página principal. Las novedades, no pintan nada donde estan, lo lógico es que esa información se comunicase a los libreros vía email, y ellos colocasen las novedades donde crean más conveniente en sus webs.
Como ya comento al principio del artículo, está creada con asp.net, con lo que muy probablemente el coste mensual o anual del servidor sea alto, ya que estarán pagando la licencia de Windows. Nunca entenderé este empeño de las grandes empresas de utilizar tecnologías de pago cuando con PHP tendría lo mismo mucho más barato.
DISEÑO
Me gusta. Así sin más, y si la comparamos con el portaldemusica.es de Promusicae, toda una obra de arte. Ahora bien, respecto a la cabecera, siempre que hablásemos de una tienda de venta de libros (o un blog de esta temática) estaría elegante (habría que ver el resto), pero no es el caso, por tanto me resulta demasiado grande para el cometido de la web, que es aportar información. Y tal vez destacar más las FAQs que están algo escondidas y será casi lo primero que se vaya a usar, sobre todo por los libreros. Incluso le cambiaría el nombre a “Ayuda” o “Preguntas frecuentes”, ya que, los libreros dudo que estén habituados a este tipo de terminología.
Por lo que puedo ver dentro del código fuente de la página:
<meta name=”author” content=”Julio Rabadán” />
<meta name=”company” content=”Somms.NET” />
El diseño ha sido subcontratado a esta empresa: somms.net, y digo subcontratado porque ellos no han llevado el desarrollo de la plataforma.
PLATAFORMA DE DISTRIBUCIÓN
Por fin la parte entretenida. El meollo de la cuestión, La piedra Rossetta del proyecto. El I+D de las editoriales. Lo original… estoooo… no… original no mucho.
No es original porque es algo que ya existía, simplemente se han hecho algunos añadidos. Me explico:
La empresa contratada para crear la plataforma es Newcomlab, que ya tenía creada la plataforma de distribución desde hace tiempo.
El sistema es el mismo con la excepción del formato de los archivos, antes utilizaban un sistema de Microsoft y ahora es de Adobe.
No me voy a extender ya que tanto en la web de libranda como en la de newcomlab se explica más o menos el funcionamiento global de la plataforma. Pero sí dejaré unos links que espero os resulte de interés:
- Modelo B2B de Newcomlab (PDF)
- La esfera de los libros de Newcomlab (Sistema de conversión de archivos Quark (entre otros) a PDF o formato ebook)
- Medios de pago de Newcomlab
- Broadebooks de Newcomlab (Plataforma de distribución de ebooks)
- Soluciones digitales para libros electrónicos de Newcomlab (PDF)
- Otros PDFs
Tenian hasta su propia tienda de ebooks, pero la cerraron, habría que saber porqué.
Algo que si me llama la atención de la actual forma de venta de ebooks con esta plataforma, es que el usuario no va a realizar la descarga directamente desde la web de su librero favorito, sino a través de un email que le enviará Libranda. Para mí, que me dedico al software, me produce una vergüenza ajena increiblemente grande. Es incomprensible que para descargar un puto libro tenga el usuario que dar tantas vueltas. Y encima de pago.
CONCLUSIÓN
Buen intento, pero mal marketing. El proyecto es interesante pero no se ha sabido llevar correctamente. Gran campaña de marketing para anunciar nada. Muy lentos digitalizando los libros, teniendolos ya en PDF se puede utilizar Calibre para pasarlos a ePUB, por ejemplo. DRM sin compatibilidad con ereaders antigüos, solo los más modernos pueden leerlo. Mala organización de la web, falta información o está mal indicada (Si conseguís que os de error el formulario de acceso de clientes decidmelo que no ha habido manera xD. Poco usable). Da la impresión de haber corrido demasiado para tenerla antes de la temporada escolar de septiembre y las vacaciones de agosto. Descarga del ebook muy engorrosa para el usuario. En fin, mucho tienen que mejorar para que a final de año la gente compre ebooks y no vaya a las webs gratuitas.
FUENTES Y LINKS DE ESTOS ÚLTIMOS DÍAS
- Terremoto Libranda
- Libranda, ángeles y demonios
- Los errores de Libranda, tres en uno
- La industria editorial apuesta por ebooks caros y difíciles de comprar
- No seamos incautos, Libranda no pretende vender ebooks
- Y en Twitter #Libranda
- FUSION DE LA LIBRERIA FISICA CON LA VIRTUAL. TIENDA DE CONTENIDOS (CONTENT STORE) (Documento en google docs intentando desgranar las necesidades de una posible tienda que abarque todos los contenidos (música, libros, cine, series, etc). Visto en uno de los comentarios de los anteriores artículos.
- Libranda las cosas no se hacen así
- Historia de una muerte anunciada (libros electrónicos) (Interesante artículo aunque de abril de 2010, merece la pena leerlo)
- El asedio a Libranda
- Libranda, lo que se veía venir. Imagen de la semana (Actulizo para añadir este nuevo link (00:15 pm))
- Libranda, la abominación hecha tienda de ebooks (nuevo link. (00:42 pm))
- Libranda, otra oportunidad perdida (nuevo link (01:12pm))
- Bajo la piel de #Libranda (Actualizo para añadir este nuevo link (22/07/2010)
Opera, Adsense y un procesador de doble nucleo al 50%
5 may
Para mí, el navegador Opera es uno de los mejores navegadores que existen en la actualidad rápido en ejecutarse, rápido en cargar páginas, y más o menos como los demás con la memoria, y sobre todo sigue los estándares.
Pero desde hace un tiempo no podía acceder a la página de adsense, sin razón aparente, así que con el tiempo me olvidé de ella, y entraba por Chrome o Firefox. Hasta hace unos días que actualicé el navegador a la versión 10.53 con la que, pasado un tiempo navegando, el procesador se ponía al 50% de su capacidad a causa de Opera; aun sin pestañas abiertas.
Déspues de pasarme un par de días comiendome la cabeza por el tema, descubro que el fallo está en que han deshabilitado por defecto el protocolo de seguridad TLS 1.1, así que accediento a:
Configuración/Opciones/Avanzado/Seguridad/Protocolos de seguridad
Y ahí activais el protocolo TLS1.1 y pulsais aceptar, podeis cerrar y volver a abrir, pero creo que el procesador volverá al 2-10% para Opera (dependiendo de lo que esteis haciendo).
Y sí, ya he vuelto a reabrir Adsense con Opera con este cambio. XD
Mi primer ¡Hola Mundo! con Symfony
19 abr
Ayer os mostré mi pequeña odisea para instalar Symfony en WAMP o al menos el SandBox, hoy toca empezar a programar.
Sigo con el libro en español de symfony.es. En el capítulo cuarto la cosa se empieza a poner interesante, voy a empezar a enrear con Symfony jejejeje.
Instalar Symfony + WAMP
17 abr
Una de las cosas más entretenidas de un programador (al menos para mí), es la de reciclarse cada poco tiempo para no quedarse estancado. Yo estoy en este proceso y después de varios días intentando instalar Symfony junto con WAMP al fin lo he conseguido (Sí, me ha costado un huevo, ¡que pasa! xD); para que otros desarrolladores no tengan que dedicarse a buscar información sobre como instalar Symfony junto a WAMP voy a explicar como realizarlo, los fallos que me ha dado, como solucionarlos, etc. Vamos allá.
Telefónica corta el acceso externo a sus servidores DNS
7 mar
Así se titulaba un artículo en bandancha.eu del pasado viernes, donde indicaba que estos servidores dejan de ser públicos y solo serán accesibles desde la red de Telefónica (o solo para sus clientes).
Como afectado por Telefónica, os recomiendo el siguiente listado de servidores DNS que podeis utilizar; o como bien indican en el artículo: siempre nos quedarán las DNS de Google
