Archive

Archive for the ‘sysadmin’ Category

Lighthttpd y los proxy

May 16th, 2008 1 comment

El otro día me había puesto a hacer algunos experimentos con el tema de Proxy en Apache, y me di cuenta que la verdad era medio complicado conseguir cosas interesantes.

Como soy compañero de uno de los difusores mas importantes de lighthttpd en Argentina (Martin Sarsale), me puse a investigar este tema de Proxy en lighthttpd.

La verdad, es que es increíble los simple y rápido de implementar, y las posbilidades que tiene.

Primero que nada, vamos a explicar un poco lo que yo puntualmente tenia que resolver, y como lo hice.

Tengo un Server que tiene millones de fotos y videos en formato flv, y muchos js y css, mas el apache con PHP.

Por otro lado, tengo un servidor con MySQL.

El problema radica en que cada vez que se solicitaba una imagen (el sitio muestra galerías de imágenes) se instanciaban muchos procesos de apache que ocupaban sus buenos MB en RAM. Esto generaba que cuando había 100 usuarios concurrentes, todo se caiga pero mal.

Bien, la solución que se me ocurrió fue poner un servidor mas con todo el contenido estático. Implemente el lighthttpd, y la verdad es que el contenido se servia de maravilla, era muy rápido, y re livianito.

El tema estaba ahora en que, no podía ir a cambiar todas las referencias de imágenes, js, css y videos a una nueva URL (onda static.server.com que apuntaría al nuevo Server) por que había mucho hardcode.

La solución que encontré fue simple, en el servidor con Apache y PHP, instale un lighthttpd en el port 80, mande el Apache al 8080, y aplique estas pequeñas líneas de config:

proxy.server = ( “.php” =>

( (

“host” => “127.0.0.1″,

“port” => 8080

) ),

“.css” =>

( (

“host” => “192.168.1.50″,

“port” => 80

) ),

“.gif” =>

( (

“host” => “192.168.1.50″,

“port” => 80

) ),

“.jpg” =>

( (

“host” => “192.168.1.50″,

“port” => 80

) ),

“.flv” =>

( (

“host” => “192.168.1.50″,

“port” => 80

) ),

“.js” =>

( (

“host” => “192.168.1.50″,

“port” => 80

) )

)

Creo que es bastante entendible como funciona esto.

No quiero explicar cosas de mas, ni ponerme en detalles, solo quiero presentarles una mínima idea de las cosas que se pueden hacer fácilmente con lighthttpd.

Saludos.

Sphinx : la solucion a la busqueda de texto

May 1st, 2008 No comments

Hola gente como andan????.

Hoy vamos a hablar de sphinx, una solucion interezante a la hora de solucionar el problema de la busquedas de texto.

Normalmente sacrificamos el modelo de entidad/relacion e integridad referencial con alguna tabla MyISAM (en MySQL claro esta) para aplicar un full-text y hacer que las busquedas de texto sean mas rapidas.

La verdad, eso es una verdadera porqueria, y todos lo sabemos.

Ahora bien, unos simpaticos rusos nos dieron una solucion llamada Sphinx, que es un programa que toma un query SQL, indexa el resultado, y despues nos deja un indece propio para las busquedas de texto.

Por ejemplo, tenemos una tabla de users con mas de 1 millon de registros, y queremos buscar users por username, email, nombre y apellido.

En Sphinx creamos un indice que se alimentara del query

select username, password, email, fname, lname from Users;

Y le indicamos que el “id” sera el user_id.

Sphinx corre el query intermamente, y armar el indexe de texto.

Las busquedas con Sphinx son de lo mas rapida que se vio, asi que les sorprendera.

Trae una API para PHP (para usarlo desde PHP) y hacer las busquedas.

Tiene una gran varidad de parametros para la relevancia de la busqueda y cosas asi, les aseguro que es ideal.

En proximos post se hablare de ejemplos, casos de implementacion, tips, etc.