<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Para colores, 32 Bits &#187; Sistemas Operativos</title>
	<atom:link href="http://www.arlay.net/category/sistemas-operativos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.arlay.net</link>
	<description>Cosas de aquí y allá</description>
	<lastBuildDate>Wed, 10 Mar 2010 19:28:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mejorando lo presente</title>
		<link>http://www.arlay.net/2010/02/25/mejorando-lo-presente/</link>
		<comments>http://www.arlay.net/2010/02/25/mejorando-lo-presente/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:28:17 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=1589</guid>
		<description><![CDATA[
Este es un post técnico que complementa al de cómo implementé el tema de NginX + PHP en FastCGI.
Desde siempre, dados varios bugs conocidos de php en cgi que, según la versión, hacían que los sockets fueran más o menos estables tenía un proceso en el cron del sistema que me reiniciaba el php (los [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.arlay.net/2010/02/25/mejorando-lo-presente/"><img class="size-full wp-image-1596 aligncenter" title="nginx_get_async_or_get_sunk" src="http://www.arlay.net/wp-content/uploads/nginx_get_async_or_get_sunk.png" alt="" width="594" height="459" /></a></p>
<p style="text-align: justify;">Este es un post técnico que complementa al de cómo <a href="http://www.arlay.net/2009/07/03/actualizando-el-nginx/">implementé el tema de NginX + PHP en FastCGI</a>.</p>
<p style="text-align: justify;">Desde siempre, dados varios bugs conocidos de php en cgi que, según la versión, hacían que los sockets fueran más o menos estables tenía un proceso en el cron del sistema que me reiniciaba el php (los sockets realmente) cada día a las 6:15 de la mañana.</p>
<p style="text-align: justify;">A veces, cada X semanas, el php se quedaba colgado y lo reiniciábamos manualmente. NOTA: no es que el php se quedaba colgado, el tema radica en que el socket de escucha se quedaba tonto sin responder, los procesos de php seguían ejecutándose esperando cargas y peticiones (en estado suspendido). La solución al reiniciar, era que matando los procesos y rearrancando esa parte, el socket se creaba de nuevo y volvía a la normalidad.</p>
<p style="text-align: justify;">Esto no se trata en casi ninguna web, exceptuando una: <a href="http://blog.taragana.com/index.php/archive/how-to-stop-crashing-hanging-of-php-cgi-spawn-fcgi-with-nginx-lighttpd/">En el blog de Taragana</a>.</p>
<p style="text-align: justify;"><span id="more-1589"></span></p>
<p style="text-align: justify;">Tras varios meses así, decidí implementar una mejor solución. Encontré una versión mejorada para Ubuntu (aunque yo uso Debian) de un script de arranque usando demonios. Tras esto, mejoraba 2 cosas: era más consistente el arranque (al poderlo poner en el arranque del sistema sin problemas) y se cargaba la configuración de php con más megas de RAM asignados (de la otra manera lo que pasaba era que se arrancaba el php en fcgi con valores por defecto (aunque le pasara por parámetro el fichero php.ini).</p>
<p style="text-align: center;"><a href="http://www.arlay.net/wp-content/uploads/php.png"><img class="size-full wp-image-1597 aligncenter" title="php" src="http://www.arlay.net/wp-content/uploads/php.png" alt="" width="576" height="376" /></a></p>
<p style="text-align: justify;">Estos scripts básicamente son dos: <a href="http://www.arlay.net/php-fastcgi.default.txt">/etc/default/php-fastcgi</a> (fichero de configuración) y el <a href="http://www.arlay.net/php-fastcgi.txt">script de arranque</a>.</p>
<p style="text-align: justify;">Este cambio lo realicé a principios de enero y durante 2 semanas no dió ningún problema, tuve que comentar la linea de reinicio del cron porque no era necesario.</p>
<p style="text-align: justify;">Pero tras eso, por alguna actualización o algo, la cosa fallaba como una escopeta de feria. Volví a poner el reinicio cada 2 días, pero ni eso&#8230; lo volví a poner a un día. Pero no bastaba&#8230;</p>
<p style="text-align: justify;">La solución por probar era compilar el php-fm, pero se me antojaba demasiado complicado para dejar el sistema tal como lo tengo ahora, así que decidí investigar.</p>
<p style="text-align: justify;">Primero pensé en ver si había alguna otra implementación de sockets que recibiera peticiones y pudiera ejecutar lo recibido usando el cliente normal de php de bash. Miré si había alguna manera de crear sockets desde 0 con php para este fin, pero no había nada sin tener que sumirme en decenas de varios de documentos de programación en C sin tener mucho tiempo.</p>
<p style="text-align: justify;">Tras buscar, llegué hasta <a href="http://hostingfu.com/article/keeping-your-php-fastcgi-processes-alive">un blog que hablaba del tema</a>. El auto se había <a href="http://www.arlay.net/phpmonitor.py.txt">programado un script en python que</a>, básicamente, escaneaba por errores en el log del NginX cada 2 segundos sin impacto en el sistema. El que aquí os pongo simplemente tiene comentadas las lineas para enviar correo, dado que pasaba mal algunos parámetros al sendmail y se colgaba.</p>
<p style="text-align: justify;">Básicamente, lo que hace es:</p>
<ul style="text-align: justify;">
<li>Se ejecuta y se &#8216;demoniza&#8217;, así que se queda en el sistema.</li>
<li>Escanea el <code>/var/log/nginx/error.log</code> cada 2 segundos, usando algo como <code>tail -f</code>.</li>
<li>Si se encuentra en el log las cadenas “104: Connection reset by peer” o “111: Connection refused”,
<ul>
<li>Ejecuta un <code>killall -9 php5-cgi (el binario se puede configurar)</code></li>
<li>Ejecuta el script de arranque <code>/etc/init.d/php-fastcgi start</code> </li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Al usar el tail -f, se usa muy poca memoria y permite estar tranquilo&#8230; como mucho hay un downtime de varios segundos. Luego se arranca como si no hubiera pasado nada.</p>
<p style="text-align: justify;">Para evitar que algo reviente el phpmonitor.py, he creado <a href="http://www.arlay.net/checkphp.sh.txt">un script en bash ejecutado cada minuto</a> via cron que simplemente mira si se está ejecutando el monitor. Si se ejecuta, sale; si no, lo ejecuta. La doble seguridad o doble chequeo es necesario.</p>
<p style="text-align: justify;">Cosas a mejorar:</p>
<ul style="text-align: justify;">
<li>En el script de python, podríamos usar el propio script de arranque para parar los procesos en lugar de hacer un kill directamente; o usar un simple restart&#8230;</li>
<li style="text-align: justify;">Aplicar una parte de la solución de Taragana: crear pools para cada aplicación, así no siempre se quedaría todo parado. Aunque eso implicaría modificar el script de python para discriminar entre dominios/aplicaciones y no reiniciar lo que no toca</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2010/02/25/mejorando-lo-presente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Costes de transmisión en los últimos 10 años</title>
		<link>http://www.arlay.net/2010/01/14/costes-de-transmision-en-los-ultimos-10-anos/</link>
		<comments>http://www.arlay.net/2010/01/14/costes-de-transmision-en-los-ultimos-10-anos/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 21:43:55 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[gigabyte]]></category>
		<category><![CDATA[kilobit]]></category>
		<category><![CDATA[precio]]></category>
		<category><![CDATA[streaming]]></category>
		<category><![CDATA[terabyte]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=1502</guid>
		<description><![CDATA[
Alguien tuvo acceso a muchos datos referentes al precio de transmitir datos en Internet en los últimos 10 años. Es increible observar la tendencia general del declive del precio, sobretodo en la última década. Y esas tarifas solo hacen referencia a lo que las empresas pagaban, pero no incluye la depreciación general.
En 1998, el precio [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.arlay.net/2010/01/14/costes-de-transmision-en-los-ultimos-10-anos/"><img class="size-full wp-image-1503 aligncenter" title="streaming-video-audio-9" src="http://www.arlay.net/wp-content/uploads/streaming-video-audio-9.gif" alt="" width="400" height="400" /></a></p>
<p style="text-align: justify;">Alguien tuvo acceso a muchos datos referentes al precio de transmitir datos en Internet en los últimos 10 años. Es increible observar la tendencia general del declive del precio, sobretodo en la última década. Y esas tarifas solo hacen referencia a lo que las empresas pagaban, pero no incluye la depreciación general.</p>
<p style="text-align: justify;">En 1998, el precio medio pagado por los distribuidores de contenido para transmitir video a Internet era de 15 céntimos de dólar por megabyte transmitido. Repetimos, por transmisión; eso no incluye el precio del hosting donde tener el archivo etc. Para entonces, las cosas no se medían en GB o TB, dado que nadie transmitía tanto, y la media del video transmitido era a un ancho de banda de 37Kbps. Si avanzamos hasta el presente, tenemos que empresas como Netflix codifican y transmiten contenido a un bitrate 90 veces más grande que en 1998.</p>
<p style="text-align: justify;">Para ponernos definitivamente en el tema, y para que todo el mundo lo entienda, a día de hoy Netflix paga 5 céntimos de dólar para transmitir TODA una peli por Internet. Si Netflix existiera en 1998, y a la misma calidad que hoy, le costaría la friolera de 270 dólares por peli. Por supuesto, en 1998 nadie tenía conexión de 3 Mbps, incluso si solo se codificara los videos a 37Kbps, ello le saldría entre 2&#8242;40 y 4&#8242;80 dólares por una sola peli. Todo esto os sirve para daros una idea de cuan lejos ha llegado la validad del video en internet, hábitos de consumo y tarifas a grandes rasgos de los últimos 10 años. <br />Pero incluso con esa bajada de precios tan sorprendente, las compañías siguen haciendo números para conseguir dinero con el tema del video de online.</p>
<p style="text-align: justify;"><a href="http://blog.streamingmedia.com/the_business_of_online_vi/2010/01/bandwidth-pricing-trends-cost-to-stream-a-movie-today-five-cents-cost-in-1998-270.html">Texto original aquí</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2010/01/14/costes-de-transmision-en-los-ultimos-10-anos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actualizando el NginX</title>
		<link>http://www.arlay.net/2009/07/03/actualizando-el-nginx/</link>
		<comments>http://www.arlay.net/2009/07/03/actualizando-el-nginx/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:47:43 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=848</guid>
		<description><![CDATA[
Hacía tiempo que veía una cosa extraña en la instalación del servidor: se actualizaba todo menos el paquete principal de las webs, el NginX (servidor de alto rendimiento).
Tras buscar un poco, me percaté de este hilo en los foros de Ubuntu que realmente, en ubuntu/debian no se actualizaba dicho paquete desde la versión 0.6.35 (y [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-850 aligncenter" title="nginx-logo" src="http://www.arlay.net/wp-content/uploads/nginx-logo.png" alt="nginx-logo" width="350" height="90" /></p>
<p style="text-align: justify;"><a href="http://www.arlay.net/wp-content/uploads/nginx-logo.png"></a>Hacía tiempo que veía una cosa extraña en <a href="http://www.arlay.net/2008/07/28/nos-hemos-mudado/">la instalación del servidor</a>: se actualizaba todo menos el paquete principal de las webs, <a href="http://www.arlay.net/2008/04/10/como-consegui-estabilizar-anieto2k-y-bloghogwarts/">el NginX (servidor de alto rendimiento)</a>.</p>
<p style="text-align: justify;">Tras buscar un poco, me percaté de <a href="http://ubuntuforums.org/showthread.php?t=1181903" target="_blank">este hilo en los foros de Ubuntu</a> que realmente, en ubuntu/debian no se actualizaba dicho paquete desde la versión 0.6.35 (y eso que nosotros usamos testing).</p>
<p style="text-align: justify;"><a href="http://wiki.nginx.org/NginxInstall" target="_blank">En la web</a>, esa versión ya aparece como legacy (en plan funcionó pero está obsoleta), siendo la versión de desarrollo la 0.8.4 y la estable la 0.7.61</p>
<p style="text-align: justify;">La verdad es que no sé por qué no se ha ido actualizando, pero veo que no es cosa nuestra, pues este programejo ya ha pasado a lighttpd en cuestión de sitios que lo tienen instalado.</p>
<p style="text-align: justify;">Como está en inglés, ahí va la receta para actualizar desde debian/ubuntu con apt:</p>
<ol style="text-align: justify;">
<li>Verificar que no tengais <a href="http://asiermarques.com/2008/01/22/instalar-nginx-05x-en-debian" target="_blank">nada referente al nginx en el /etc/apt/preferences</a></li>
<li>Para instalar desde 0, primero instalad la versión que os ofrece vuestra versión, desde los repositorios oficiales</li>
<li>Modificad vuestro /etc/apt/sources.list para añadir esto:<br />
deb <a style="color: #444444; text-decoration: underline;" href="http://apt.avuc.nl/" target="_blank">http://apt.avuc.nl</a> lenny stable<br />
deb-src <a style="color: #444444; text-decoration: underline;" href="http://apt.avuc.nl/" target="_blank">http://apt.avuc.nl</a> lenny stable</li>
<li> &#8216;Upgradeais&#8217;</li>
<li>Como el que nos provee estos paquetes es una persona diferente, compiló con otras opciones; pero solo hay que hacer:<br />
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx</li>
<li>Reiniciar el nginx con vuestro script de toda la vida ( /etc/init.d/nginx)</li>
</ol>
<p style="text-align: justify;">Tras esto, ya tenemos nuestro nginx listo en la última versión.</p>
<p style="text-align: justify;">La persona del post del foro se ha ofrecido voluntario a ir compilando las versiones estables y ponerlas en el mismo repositorio.</p>
<p style="text-align: justify;"><strong>Actualización</strong>: se me había olvidado mencionar que, buscando cosas del nginx, me topé con <a href="http://www.anilcetin.com/convert-apache-htaccess-to-nginx/" target="_blank">este convertidor de reglas htaccess a nginx</a>.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/07/03/actualizando-el-nginx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 maneras de hacer copia de tu mysql &#8211; método 5</title>
		<link>http://www.arlay.net/2009/03/20/10-maneras-de-hacer-copia-de-tu-mysql-metodo-5/</link>
		<comments>http://www.arlay.net/2009/03/20/10-maneras-de-hacer-copia-de-tu-mysql-metodo-5/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 07:42:32 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=648</guid>
		<description><![CDATA[5. Pasar tu base de datos a un fichero XML con PHP
Aunque eso simplemente es una manera burda de hacer la lectura más comprensible, la verdad es que si la base de datos es muy grande, la lectura posterior para integrarla de nuevo en un motor MySQL será más rápida por la estructura de árbol [...]]]></description>
			<content:encoded><![CDATA[<p><strong>5. Pasar tu base de datos a un fichero XML con PHP</strong></p>
<p>Aunque eso simplemente es una manera burda de hacer la lectura más comprensible, la verdad es que si la base de datos es muy grande, la lectura posterior para integrarla de nuevo en un motor MySQL será más rápida por la estructura de árbol que adopta el fichero XML final.</p>
<p>Podeis leer el código en <a href="http://davidwalsh.name/backup-database-xml-php" target="_blank">la web de David Walsh</a>.</p>
<p><a href="http://www.arlay.net/2009/03/19/10-maneras-de-hacer-copia-de-tu-mysql-metodo-4/" target="_self">Anterior método</a> -</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/03/20/10-maneras-de-hacer-copia-de-tu-mysql-metodo-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 maneras de hacer copia de tu mysql &#8211; método 4</title>
		<link>http://www.arlay.net/2009/03/19/10-maneras-de-hacer-copia-de-tu-mysql-metodo-4/</link>
		<comments>http://www.arlay.net/2009/03/19/10-maneras-de-hacer-copia-de-tu-mysql-metodo-4/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 07:34:39 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=639</guid>
		<description><![CDATA[
4. Directamente con mysqldump a saco
En los anteriores métodos ya se ha usado mysqldump, una utilidad que viene con el mysql en cualquier sistema. Aparte de combinarlo, dicho mysqldump ofrece opciones variadas que, con varios ejemplos, repasaremos para ver como hacer los backups a tu manera.

De la manera más sencilla, el comando se ejecuta con [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.arlay.net/2009/03/19/10-maneras-de-…mysql-metodo-410-maneras-de-hacer-copia-de-tu-mysql-metodo-4/"><img class="size-medium wp-image-646 aligncenter" title="falcon-transactional-engine-part3_2" src="http://www.arlay.net/wp-content/uploads/falcon-transactional-engine-part3_2-300x228.gif" alt="falcon-transactional-engine-part3_2" width="300" height="228" /></a></p>
<p><strong>4. Directamente con mysqldump a saco</strong></p>
<p>En los anteriores métodos ya se ha usado mysqldump, una utilidad que viene con el mysql en cualquier sistema. Aparte de combinarlo, dicho mysqldump ofrece opciones variadas que, con varios ejemplos, repasaremos para ver como hacer los backups a tu manera.</p>
<p><span id="more-639"></span></p>
<p><strong>De la manera más sencilla</strong>, el comando se ejecuta con el siguiente esquema:</p>
<p><code>mysqldump ---user [nombre de usuario] ---password=[contraseña] [base de datos a copiar] &gt; [fichero de salida]</code></p>
<p>No creo que haya mucho que explicar al respecto.</p>
<p>Como opción extra, se puede usar el argumento -opt:</p>
<p><code>mysqldump --opt basededatos &gt; sql.dump</code></p>
<p>Especificando el argumento <code>--opt</code>, en teoría, estamos haciendo un volcado preparado para ser luego introducido en otro MySQL. Aunque suene raro, la explicación es sencilla: con dicho argumento, el mysqldump crea un volcado má´s sofisticado, incluyendo sentencias como &#8220;<code>DROP TABLE IF EXISTS</code>&#8221; entre otras. Así, no habrá problema en recuperar una copia del día anterior si ha habido algún destrozo interno o alguna salvajada en el mismo servidor. Además, se meten sentencias de bloqueo, para evitar problemas de concurrencia a la hora de que los datos se vuelquen tanto fuera como dentro de otro MySQL.</p>
<p><strong>Volcando de un servidor a otro &#8216;on-the-fly&#8217;</strong>:</p>
<p><code>mysqldump --host=host1 --opt basededatos | mysql --host=host2 --C nuevabase</code></p>
<p>Usando las tuberías en unix/linux (pipes), se puede hacer una pequeña virguería como la descrita. Podemos pasar el argumento host (que contendrá la IP o el nombre de la máquina) para, a la vez que volcamos con mysqldump, aceptarlo e integrarlo en otro servidor con el cliente de consola de mysql. Nótese el argumento &#8211;opt de la primera parte, y el &#8211;C de la segunda, donde se especifica que se compriman los datos que viajen.</p>
<p>El único inconveniente es que la nuevabase debe estar creada en el host2 antes de ejecutar el comando. Ambos servidores deben permitir conexiones desde fuera si se lanza este comando desde otra máquina remota que no sea ni el host1 ni el 2.</p>
<p><strong>La típica</strong>:</p>
<p><code>mysqldump ---user admin --password=password basededatos |  gzip &gt; backup.gz</code></p>
<p>Esta es la típica opción que se usa en el 90% de los casos que conozco&#8230; un volcado, y comprimido usando gzip (se puede usar cualquier compresor de consola).</p>
<p>Como últimos argumentos a comentar, estan el &#8211;no-data y el &#8211;databases:</p>
<p><code>mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 &gt; sql.dump</code></p>
<p>El primero simplemente especifica que no se vuelquen los datos, sino solo la estructura. El segundo, argumenta que le pasaremos varios nombres de diferentes bases de datos para volcar. No hay mucho más que os pueda servir.</p>
<p><strong>Como restaurar lo que se ha volcado</strong>:</p>
<p>Esa era la pregunta que os deberíais estar haciendo, si es que no habeis restaurado un mysql nunca.</p>
<p>La solución pasa por invocar el cliente mysql a pelo pasándole como parámetros el nombre de la base de datos y el fichero sql que tengamos:</p>
<p><code>mysql mybasededatos &lt; sql.dump</code></p>
<p>Via | <a href="http://www.sitepoint.com/article/backing-up-mysqldump/3/" target="_blank">SitePoint</a></p>
<p><a href="http://www.arlay.net/2009/03/18/10-maneras-de-hacer-copia-de-tu-mysql-metodo-3/" target="_self">Anterior método</a>. &#8211; <a href="http://www.arlay.net/2009/03/20/10-maneras-de-hacer-copia-de-tu-mysql-metodo-5/" target="_self">Siguiente método</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/03/19/10-maneras-de-hacer-copia-de-tu-mysql-metodo-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>10 maneras de hacer copia de tu mysql &#8211; método 2</title>
		<link>http://www.arlay.net/2009/03/17/10-maneras-de-hacer-copia-de-tu-mysql-metodo-2/</link>
		<comments>http://www.arlay.net/2009/03/17/10-maneras-de-hacer-copia-de-tu-mysql-metodo-2/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 07:31:46 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=626</guid>
		<description><![CDATA[2. Copiar al estilo linuxero.
Básicamente se trata de crear una tarea en el cron para que automatice la creación del backup (solo viable si el servidor de BDD es un linux).
15 2 * * * root mysqldump -u root -pPASSWORD &#8211;all-databases &#124; gzip &#38;gt; /mnt/disk2/database_`data &#8216; %m-%d-%Y&#8217;`.sql.gz
 
Aquí básicamente definimos el usuario root y su password [...]]]></description>
			<content:encoded><![CDATA[<p><strong>2. Copiar al estilo linuxero.</strong></p>
<p>Básicamente se trata de crear una tarea en el cron para que automatice la creación del backup (solo viable si el servidor de BDD es un linux).</p>
<p class="wp-caption-dd"><span class="wp-caption">15 2 * * * root mysqldump -u root -pPASSWORD &#8211;all-databases | gzip &amp;gt; /mnt/disk2/database_`data &#8216; %m-%d-%Y&#8217;`.sql.gz</span></p>
<p class="wp-caption-dd"> </p>
<p>Aquí básicamente definimos el usuario root y su password para realizar una copia completa de todas las bases de datos que esté manejando mysql. Esto se puede reducir si cambiamos el usuario/contraseña y le especificamos la base/tabla a copiar. Lo concatenamos con gzip para que se comprima el sql y se le añade la fecha (pillada del sistema)</p>
<p>En caso de que el servidor no sea un Linux, se podrá crear una tarea programada (si es Windows) para realizar un simple mysqldump:</p>
<p><span class="wp-caption">mysqldump -u root -p <span class="IL_SPAN">wordpress</span> wp_posts &gt; D:\wordpress_posts.sql</span></p>
<p>Lo anterior sería un ejemplo de volcado de la tabla de posts de un blog.</p>
<p>Via | <a href="http://www.backuphowto.info/how-backup-mysql-database-automatically-linux-users" target="_blank">Backup HowTo</a></p>
<p><a href="http://www.arlay.net/2009/03/16/10-maneras-de-hacer-copia-de-tu-mysql-metodo-1/" target="_self">Anterior método</a> - <a href="http://www.arlay.net/2009/03/18/10-maneras-de-hacer-copia-de-tu-mysql-metodo-3/" target="_self">Siguiente método</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/03/17/10-maneras-de-hacer-copia-de-tu-mysql-metodo-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>10 maneras de hacer copia de tu mysql &#8211; método 1</title>
		<link>http://www.arlay.net/2009/03/16/10-maneras-de-hacer-copia-de-tu-mysql-metodo-1/</link>
		<comments>http://www.arlay.net/2009/03/16/10-maneras-de-hacer-copia-de-tu-mysql-metodo-1/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 21:22:40 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=617</guid>
		<description><![CDATA[
El método 1: Copiar automáticamente la base de datos a Amazon S3
Mucho usuarios hoy en día usan las capacidades de Amazon S3 para realizar las copias de mysql. Aquí tenemos un pequeño script que, aparte de realizar la copia, se encarga de subirlo a Amazon S3 (en django).

Cosas a cambiar antes de usar dicho script:
1) [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="hhttp://www.arlay.net/2009/03/16/10-maneras-de-hacer-copia-de-tu-mysql-metodo-1/"><img class="size-full wp-image-620 aligncenter" title="mysql-s3" src="http://www.arlay.net/wp-content/uploads/mysql-s3.png" alt="mysql-s3" width="483" height="207" /></a></p>
<p>El método 1: Copiar automáticamente la base de datos a Amazon S3</p>
<p>Mucho usuarios hoy en día usan las capacidades de Amazon S3 para realizar las copias de mysql. <a href="http://uswaretech.com/blog/wp-content/uploads/2009/02/mysql_to_amazons3.zip" target="_self">Aquí tenemos un pequeño script</a> que, aparte de realizar la copia, se encarga de subirlo a Amazon S3 (en django).</p>
<p><span id="more-617"></span></p>
<p><strong>Cosas a cambiar antes de usar dicho script:</strong></p>
<p>1) Hay que poner la libreria de Amazon S3 propia para python en el path del sistema (para que sea visible). Podeis bajar dicha libreria en este link: <a title="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134" onclick="javascript:pageTracker._trackPageview('/outbound/article/developer.amazonwebservices.com');" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134">http://developer.amazonwebservices.com</a><a title="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134" onclick="javascript:pageTracker._trackPageview('/outbound/article/developer.amazonwebservices.com');" href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=134">/connect/entry.jspa?externalID=134</a></p>
<p>2) Hay que mantener el script mysql_to_amazons3.py  en el mismo directorio que settings.py.</p>
<p>3) Definir las siguientes variables en el fichero settings.py</p>
<ul>
<li><strong>MYSQL_DUMP_PATH</strong>=  “/usr/bin/mysqldump”</li>
</ul>
<p>mysqldump es el comando con el que se hace la copia (se hace un volcado realmente) de la base de datos.Hay que darle todo el path al ejecutable.</p>
<ul>
<li><strong>AWS_ACCESS_KEY_ID</strong> = ”</li>
</ul>
<p>Esto es la clave para acceder a los servicios de Amazon. Esto se da tras darse de alta.</p>
<ul>
<li><strong>AWS_SECRET_ACCESS_KEY</strong> = ”</li>
</ul>
<p>La secret key (o password) que también da Amazon para poder acceder.</p>
<ul>
<li><strong>BUCKET_NAME</strong> = ‘tempstore’</li>
</ul>
<p>El nombre del contenedor donde guardar el fichero final de copia. Bucket es básicamente un contenedor (al pagar a Amazon S3 por el espacio ocupado, crear contenedores vendría a ser como crear directorios/carpetas).</p>
<ul>
<li><strong>ARCHIVE_NAME</strong> = &#8221; &#8220;</li>
</ul>
<p>Nombre del fichero final que se va a guardar.</p>
<ul>
<li>Hay que cambiar las variables <strong>DATABASE_NAME , DATABASE_USER</strong> y <strong>DATABASE_PASSWORD<br />
</strong> para que contengan los valores de la base de datos a copiar, y el usuario y contraseña para poder hacer dicha copia.</li>
</ul>
<p><strong>Ejecutando el script:</strong></p>
<ol>
<li>Basta con ejecutar &#8216;python mysql_to_amazons3.py&#8217; (sin comillas) para que se haga la copia y se suba a la cuenta de Amazon, con el nombre de fichero definido en el &#8216;contenedor&#8217; designado.</li>
<li>El script deja una copia de la base de datos que se ha enviado en el directorio donde se encuentra dicho script.</li>
<li>El archivo contiene dos ficheros: _data.sql que contiene los datos, _struct.sql que contiene la estructura básica de la abse de datos. Esto se ha hecho intencionadamente, es una buena práctica.</li>
<li>Si se quiere hacer una tarea programada, lo mejor es usar crontab –e con el usuario que quiera lanzarlo para hacer la definicion.</li>
</ol>
<p><strong>¿Cual es el flujo de trabajo del script?</strong></p>
<p>1.Usa subprocesos. Básicamente, usa la función Popen (pipe open) para ejecutar varios comandos (mysqldump -  -  &#8211; ).</p>
<p>2. Se lee la salida de estas tuberias para crear el fichero .tar.gz</p>
<p>3. Usa la API de Amazon S3 para subir el fichero.</p>
<p>Via | <a href="http://uswaretech.com/blog/2009/02/automatically-backup-mysql-database-to-amazon-s3-using-django-python-script/" target="_blank">Uswaretech</a></p>
<p><a href="http://www.arlay.net/2009/03/17/10-maneras-de-hacer-copia-de-tu-mysql-metodo-2/" target="_self">Siguiente método</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/03/16/10-maneras-de-hacer-copia-de-tu-mysql-metodo-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rompiendo maleficios</title>
		<link>http://www.arlay.net/2009/01/04/rompiendo-maleficios/</link>
		<comments>http://www.arlay.net/2009/01/04/rompiendo-maleficios/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 11:06:40 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=559</guid>
		<description><![CDATA[Ya tardábamos en liarla con el servidor nuevo.
Tras no tener que reiniciarlo pese a las actualizaciones semanales que le íbamos haciendo, en estos últimos días se ha colgado el servidor 2 veces en 76 horas.
Tras más de 170 días de uptime, con velocidades decentes y soportando cargas a punta pala sin inmutarse o despeinarse, una [...]]]></description>
			<content:encoded><![CDATA[<p>Ya tardábamos en liarla con <a href="http://www.arlay.net/2008/07/28/nos-hemos-mudado/" target="_self">el servidor nuevo</a>.</p>
<p>Tras no tener que reiniciarlo pese a las actualizaciones semanales que le íbamos haciendo, en estos últimos días se ha colgado el servidor 2 veces en 76 horas.</p>
<p>Tras más de 170 días de uptime, con velocidades decentes y soportando cargas a punta pala sin inmutarse o despeinarse, una actualización con bug del kernel de linux hizo que la máquina se quedara sin conexión.</p>
<p>Una lástima, pues en los últimos 6 meses llevábamos como 5TB transmitidos hacia afuera y 600 GB de tráfico entrante.</p>
<p>El problema parece ser un bug que afecta a las tarjetas de red, no sé si a todas, pero sí a las Realtek que hace que la tarjeta empieze a desconectarse y volver a conectarse&#8230; y luego directamente el driver se cuelga, dejando sin red a la maquina en cuestión.</p>
<p>La máquina parece que sigue viva, pero sin conexión. En este caso, solo puedes mandar un ticket al datacenter para que lo reinicien o reiniciarlo tu en remoto si te dan la opción (un panel que te suele dar el dc).</p>
<p>Tras esto, me puse a investigar, y ví esto en el log:</p>
<p>Jan  3 12:34:13 NaRRa kernel: [41979.812779] NETDEV WATCHDOG: eth0:<br />
transmit timed out<br />
Jan  3 12:34:13 NaRRa kernel: [41979.812821] &#8212;&#8212;&#8212;&#8212;[ cut here<br />
]&#8212;&#8212;&#8212;&#8212;<br />
Jan  3 12:34:13 NaRRa kernel: [41979.812849] WARNING: at<br />
net/sched/sch_generic.c:222 dev_watchdog+0xa6/0xfb()<br />
Jan  3 12:34:13 NaRRa kernel: [41979.812881] Modules linked in: ipv6<br />
fuse loop snd_pcsp snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm<br />
psmouse snd_timer i2c_<br />
i801 iTCO_wdt snd soundcore serio_raw snd_page_alloc i2c_core<br />
intel_agp evdev ext3 jbd mbcache raid10 ata_generic sg ehci_hcd<br />
ide_pci_generic ide_core uhci_hc<br />
d sr_mod cdrom sd_mod thermal_sys e1000e e1000 raid456 async_xor<br />
async_memcpy async_tx xor raid1 raid0 multipath linear faulty md_mod<br />
dm_zero dm_snapshot dm_r<br />
ound_robin dm_mirror dm_log dm_emc dm_multipath dm_crypt dm_mod<br />
crypto_blkcipher aic7xxx aic79xx scsi_transport_spi aacraid sata_vsc<br />
sata_via sata_uli sata_sx<br />
4 sata_svw sata_sis pata_sis sata_sil24 sata_sil sata_qstor<br />
sata_promise sata_nv sata_mv raid_class ata_piix ahci libata dock<br />
3w_xxxx 3w_9xxx scsi_mod<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813260] Pid: 0, comm: swapper Not<br />
tainted 2.6.26-1-amd64 #1<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813287]<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813287] Call Trace:<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813325]  &lt;IRQ&gt;<br />
[&lt;ffffffff802349b8&gt;] warn_on_slowpath+0&#215;51/0&#215;7a<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813366]  [&lt;ffffffff802461b2&gt;]<br />
autoremove_wake_function+0&#215;9/</p>
<div id=":vm" class="ArwC7c ckChnd">0&#215;2e<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813396]  [&lt;ffffffff80228496&gt;]<br />
__wake_up_common+0&#215;41/0&#215;74<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813426]  [&lt;ffffffff8022adc9&gt;]<br />
__wake_up+0&#215;38/0&#215;4f<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813455]  [&lt;ffffffff80243554&gt;]<br />
__queue_work+0&#215;23/0&#215;33<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813484]  [&lt;ffffffff803cc172&gt;]<br />
dev_watchdog+0&#215;0/0xfb<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813511]  [&lt;ffffffff803cc218&gt;]<br />
dev_watchdog+0xa6/0xfb<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813538]  [&lt;ffffffff803cc172&gt;]<br />
dev_watchdog+0&#215;0/0xfb<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813566]  [&lt;ffffffff8023c9e9&gt;]<br />
run_timer_softirq+0&#215;16a/0&#215;1e2<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813596]  [&lt;ffffffff802393b7&gt;]<br />
__do_softirq+0&#215;5c/0xd1<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813624]  [&lt;ffffffff8020f692&gt;]<br />
profile_pc+0&#215;21/0&#215;53<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813652]  [&lt;ffffffff8020d2cc&gt;]<br />
call_softirq+0&#215;1c/0&#215;28<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813679]  [&lt;ffffffff8020f3d0&gt;]<br />
do_softirq+0&#215;3c/0&#215;81<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813706]  [&lt;ffffffff80239317&gt;]<br />
irq_exit+0&#215;3f/0&#215;83<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813734]  [&lt;ffffffff8021aa6b&gt;]<br />
smp_apic_timer_interrupt+0&#215;8c/0xa4<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813764]  [&lt;ffffffff80212c37&gt;]<br />
mwait_idle+0&#215;0/0&#215;4d<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813791]  [&lt;ffffffff8020ccf2&gt;]<br />
apic_timer_interrupt+0&#215;72/0&#215;80<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813818]  &lt;EOI&gt;<br />
[&lt;ffffffff80212c78&gt;] mwait_idle+0&#215;41/0&#215;4d<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813853]  [&lt;ffffffff8020ac79&gt;]<br />
cpu_idle+0&#215;89/0xb3<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813886]<br />
Jan  3 12:34:13 NaRRa kernel: [41979.813904] &#8212;[ end trace<br />
a44d7356669b8f3d ]&#8212;</div>
<div class="ArwC7c ckChnd">Google me ayudó a descubrir que era un bug con el 2.6.26-1 que hay actualmente.</div>
<div class="ArwC7c ckChnd">Para curarme en salud, cogí y reinicié el servidor con el kernel anterior, 2.6.25</div>
<div class="ArwC7c ckChnd">Ahora parece que aguanta sin problemas <img src='http://www.arlay.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </div>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2009/01/04/rompiendo-maleficios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caso Psystar</title>
		<link>http://www.arlay.net/2008/04/22/caso-psystar/</link>
		<comments>http://www.arlay.net/2008/04/22/caso-psystar/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 14:57:35 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=357</guid>
		<description><![CDATA[Psystar, la empresa que ha pasado a ser conocida por toda la blogosfera maquera por empezar a vender su OpenComputer, ha dado señales de vida. Concretamente, su presidente, Rudy Pedraza, ha realizado algunas declaraciones el sitio web Forbes.
Rudy afirma que Psystar existe, y que no es ningún engaño. La razón por su aparente desaparición fue [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.psystar.com/" target="_blank">Psystar</a>, la empresa que ha pasado a ser conocida por toda la blogosfera maquera por empezar a <a href="http://www.applesfera.com/tag/opencomputer" target="_blank">vender su OpenComputer</a>, ha dado señales de vida. Concretamente, <strong>su presidente, Rudy Pedraza, ha <a href="http://www.forbes.com/technology/2008/04/18/apple-mac-psystar-tech-cx_bc_0418macman.html?feed=rss_technology" target="_blank">realizado algunas declaraciones</a> el sitio web Forbes</strong>.</p>
<p><strong>Rudy afirma que Psystar existe</strong>, y que no es ningún engaño. <strong>La razón por su aparente desaparición fue la desbordante demanda</strong> de ordenadores que tuvieron, que causó que la compañía que administraba sus pagos con tarjeta de crédito cerrara la cuenta por tener que procesar demasiadas terjetas. Además, dicha compañía les <strong>forzó a moverse a un sitio más grande</strong> para que pudieran producir sus OpenComputer a gran escala.</p>
<p><span id="more-357"></span></p>
<p>El presidente de Psystar también ha afirmado que <strong>no están escondiéndose de Apple, sino que sencillamente se han visto desbordados por la demanda</strong>. De hecho, asegura que muy pronto podrán volver a aceptar pedidos. Desde mi punto de vista personal, de momento no haría ningún movimiento hasta tener confirmaciones más fiables. Recordemos que <strong>la legalidad del OpenComputer con <a href="http://www.applesfera.com/tag/leopard" target="_blank">Mac OS X Leopard</a> instalado es bastante dudosa</strong>.</p>
<p>Como dicen en Applesfera, yo <a href="http://www.arlay.net/2008/04/14/mac-para-todos/" target="_blank">ya dudo de mi anterior post sobre la empresa</a> que iba a dar ordenadores compatibles con Mac OS X Leopard.</p>
<p>El problema, aparte de todo lo que he copiado (que me perdonen los de <a href="http://www.applesfera.com/2008/04/22-declaraciones-de-rudy-pedraza-responsable-de-psystar" target="_blank">Applesfera</a>), es que hay una claúsula básica en este sistema operativo que reza: Solo usar en máquinas Apple.</p>
<p>Es decir, solo puedes usarlo en ordenadores fabricados por Apple, nada de montarte tu clónico e instalar.</p>
<p>Soy más partidario de que Apple ponga su software en todos los ordenadores, sacando versiones específicas.</p>
<p>Aunque algunos crean que no ganarían pasta, yo sé más de uno que directamente compraría el sistema operativo.</p>
<p>Los números no engañan: vale que ganas 1000 euros en cada equipo que vendes, que le incluyes el sistema operativo (-120 euros aprox del total). Como vendes mucho hardware, en plan millones de ordenadores (tanto sobremesa como portatiles) en todo el mundo&#8230; generas muchísima pasta.</p>
<p>Ahora cambia tu punto de vista: añade a esa gente el resto del mundo que tiene windows/linux con PC&#8217;s que casi seguro que se pasarían a Mac OS X y tendrás el 99% del mercado. Teniendo tus millones de dólares por hard y sumándole otros tantos de venta de software.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2008/04/22/caso-psystar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como conseguí estabilizar Anieto2k y BlogHogwarts</title>
		<link>http://www.arlay.net/2008/04/10/como-consegui-estabilizar-anieto2k-y-bloghogwarts/</link>
		<comments>http://www.arlay.net/2008/04/10/como-consegui-estabilizar-anieto2k-y-bloghogwarts/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 15:15:07 +0000</pubDate>
		<dc:creator>Relay</dc:creator>
				<category><![CDATA[Sistemas Operativos]]></category>
		<category><![CDATA[memoria]]></category>
		<category><![CDATA[procesadores]]></category>
		<category><![CDATA[sistemas_operativos]]></category>

		<guid isPermaLink="false">http://www.arlay.net/?p=353</guid>
		<description><![CDATA[Puede parecer extraño, la verdad es que llevo casi 1 mes sin actualizar por varios motivos.
Uno de ellos, el estar liado estabilizando un blog con 5000-6000 visitas diarias diferente a Anieto2k.
Fue el propio anieto2k quien me &#8220;presentó&#8221; a Alex, de AlexSEO y BlogHogwarts, siendo este último un blog de Harry Potter. Su problema era el [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Puede parecer extraño, la verdad es que llevo casi 1 mes sin actualizar por varios motivos.</p>
<p style="text-align: left;">Uno de ellos, el estar liado estabilizando un blog con 5000-6000 visitas diarias diferente a <a href="http://www.anieto2k.com" target="_blank">Anieto2k</a>.</p>
<p style="text-align: left;">Fue el propio anieto2k quien me &#8220;presentó&#8221; a Alex, de AlexSEO y <a href="http://www.bloghogwarts.com" target="_blank">BlogHogwarts</a>, siendo este último un blog de Harry Potter. Su problema era el de siempre: mucha visita y el server inestable totalmente.</p>
<p style="text-align: left;">Por si fuera poco, ya sabemos todos que <a href="http://www.filmclub.es/search/harry+potter" target="_blank">Harry Potter</a> tiene muchos fans, este blog está alojado en un VPS (para los no entendidos, una máquina virtual). Con 1 giga de ram y, supongo yo, unos 500-600 Mhz de procesador, sin swap alguna (cosas de la tecnología usada por ese hosting), me decidí a mirar si podía estabilizar de alguna manera ese server.</p>
<p style="text-align: left;"><span id="more-353"></span></p>
<p style="text-align: left;">La instalación era una Ubuntu con LAMP y <a href="http://ricardogalli.com" target="_blank">Ricardo Galli</a> ya había pasado por ahí, cosa que dificultaba mi trabajo. No es que odie o ame a Ricardo, pero reconozco que a veces habla con argumento y con empírica.</p>
<p style="text-align: left;">Tras varios toqueteos, conseguí ponerle eAccelerator (pues estaba instalado pero no se usaba) y medio configuré unos parámetros en Apache. La cosa estaba estable casi siempre, con valores sobre 5-10 de Load Average. Esto no es un gran elogio, pero la media anterior estaba en 15. El problema era que tenía avalanchas de visitas y hacía que el load se subiera a 50 y agotaba toda la ram. Aquello era impracticable.</p>
<p style="text-align: left;">Decidí mover ficha con algo que tenía medio pensado para <a href="http://www.nopuedocreer.com" target="_blank">NoPuedoCreer</a>. El objetivo era cambiar la pila de Apache+PHP por algo más manejable. Encontré <a href="http://nginx.net/" target="_blank">Nginx</a>, un servidor web muy muy ligero con apenas consumo de memoria creado por un ruso. Aunque la opción más lógica era usar Lighttpd, Nginx tiene como punto positivo que las reglas rewrite que suele usar la gente en Apache funcionen a la primera casi sin tener que tocar nada.</p>
<p style="text-align: left;">Dicho y hecho. La parte de PHP se soluciona haciendo que se procese con el sistema directamente. Y aquí es donde estriba el cambio radical y fundamental: Apache tiene un módulo que directamente ejecuta las cosas en php en el propio entorno del servidor web, haciendo que se consuma mucha más memoria.</p>
<p style="text-align: left;">Sin embargo, Nginx se configura para que se pasen las peticiones php al comando del sistema directamente, siendo el sistema operativo el encargado de ejecutarlo y tener control sobre memoria. Aunque algunos me tachen de loco o de &#8216;are you from the past&#8217;, para mejorar el entendimiento entre php y nginx se usa php en modo fastcgi (en las librerias del sistema usa la configuración de CGI).</p>
<p style="text-align: left;">Me configuré un <a href="http://blog.kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/" target="_blank">script ejecutado cada vez que se arranca el sistema que se crean 7 procesos php en fastcgi</a> a la espera que Nginx les pase algo por hacer. Dado que BlogHogwarts estaba en un VPS, tuve que poner un script en el cron que cada día haga un kill de estos procesos y los relance de nuevo (se quedaban colgados) &#8211; esto no he tenido que hacerlo con Anieto2k.</p>
<p style="text-align: left;">Así que simplemente copié la configuración referente a eAccelerator del Apache y lo metí en la configuración CGI de php. Acto seguido escribí las configuraciónes referentes al dominio con las reglas rewrite para Nginx, <a href="http://www.davidlaing.net/node/2" target="_blank">que podeis consultar en este post</a>.</p>
<p style="text-align: left;">Paré el apache, y arranqué Nginx con los procesos php ya creados.</p>
<p style="text-align: left;">Et voilá! Resultado: como mucho, el load se pone en 5, sucediendo esto cuando se postea alguna información relevante y se linkea mucho desde diferentes sites a ese blog. Nginx casi no tiene carga, pues todo lo procesa el php con sus procesos. Generalmente el uso más notable es el de la base de datos, siendo este como máximo de un 40-50% en contadísimas ocasiones, lo normal es un 2-5%. Lleva la máquina sin caerse hace bastantes días, y el consumo de memoria es estable sin llegar a consumirse nunca el total.</p>
<p style="text-align: left;">En la parte del usuario, se notan 3 cosas: la velocidad en general de la web, que se carga cada página de golpe (antes apache procesaba cosas y esperaba a que los procesos php terminaran y seguía mostrando la web &#8211; ahora simplemente se procesa todo en el lado php y se muestra de golpe) y que no hay merma de rendimiento aparente.</p>
<p style="text-align: left;">Tras esto, decidí hacerlo en Anieto2k, sobretodo tras su puesta en escena del <a href="http://www.anieto2k.com/demo/millonario/" target="_blank">GeekTest</a>, que hizo que nos tumbaran la máquina los de Microsiervos. Así que dicho y hecho, mismo proceso mismos resultados. Siendo la máquina que hostea Anieto2k, <a title="Blog de Cine y celuloide" href="http://www.filmclub.es" target="_blank">Filmclub</a> y este mismo blog una máquina dedicada con Debian, el load rara vez pasa de 0.57 y la base de datos se mantiene entre un 20-40% por culpa de los accesos al GeekTest.</p>
<p style="text-align: left;">Todos estos blogs estan en wordpress 2.5, cosa que aumenta el consumo de CPU+Memoria. Pero como si no lo notara. Podemos tener avalanchas bestias y la máquina sigue respondiendo, sin perder ápice de configuración o trucos usados ya en php.</p>
<p style="text-align: left;">Recomiendo a todos los que tengan problemas de load, mucho tráfico y simplemente quieran algo más manejable y rápido, que usen este método.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.arlay.net/2008/04/10/como-consegui-estabilizar-anieto2k-y-bloghogwarts/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.374 seconds -->
