Archive of April 2011


Sun 17 Apr

Otra visión del infinito y del universo

Lo que a continuación vais a leer es mi parte favorita del primer libro La torre oscura (Stephen King). Este post es un simple copy/paste, pero estoy seguro de que a aquellos que no tuvieron la oportunidad de leerlo, estos parrafos no les dejarán indiferentes. El universo, el infinito, la imposibilidad de la nada.

El mayor misterio que presenta el universo no es la vida, sino el Tamaño. El
Tamaño abarca la vida, y la Torre abarca el Tamaño. El niño, que se siente a gusto con
lo maravilloso, pregunta: ¿Qué hay más allá del cielo, papá? Y el padre contesta: La
oscuridad del espacio. El niño: ¿Qué hay más allá del espacio? El padre: La galaxia. El
niño: ¿Más allá de la galaxia? El padre: Otra galaxia. El niño: ¿Y más allá de las
demás galaxias? El padre: Nadie lo sabe.
¿Lo ves? El tamaño nos derrota. Para el pez, el lago en que vive es el universo. ¿Qué piensa el pez cuando es arrastrado por la boca más allá de los plateados límites de la existencia, hacia un nuevo universo donde el aire lo sofoca y la luz es una demencia azul? ¿Dónde enormes bípedos sin branquias lo meten en una caja asfixiante y lo cubren de hierbas mojadas para dejarlo morir?
O podríamos tomar la punta de un lápiz y ampliarla. Llegamos así a realizar un descubrimiento que nos aturde: la punta del lápiz no es sólida, sino que se compone de átomos que giran y orbitan como un trillón de planetas enloquecidos. Lo que nos parece sólido no es en realidad más que una floja red, sostenida por la gravitación. Si encogiéramos hasta el tamaño adecuado, las distancias entre estos átomos se convertirían en leguas, golfos, eones. Y los átomos están a su vez compuestos de núcleos y protones y electrones que giran a su alrededor. Podríamos dar un paso más, hasta las partículas subatómicas. Y luego, ¿qué? ¿Taquiones? ¿Nada? Claro que no. Todo en el universo desmiente la nada, sugerir una conclusión a las cosas es una imposibilidad.
Si cayeras hacia el exterior, hacia el límite del universo, ¿encontrarías una cerca y carteles que indicaran CALLEJON SIN SALIDA? No. Quizás encontraras algo duro y redondeado, como el polluelo debe de ver el huevo desde el interior. Y si quebraras esa cáscara, ¿qué gigantesca y torrencial luz brillaría a través de tu agujero en el límite del espacio? ¿Atisbarías acaso por él y descubrirías que todo nuestro universo no es sino una parte de un átomo de una hoja de hierba? ¿Te verías quizás obligado a pensar que al prender fuego a una ramita estás incinerando una eternidad de eternidades? ¿Que la existencia no se yergue hacia un infinito, sino hacia una infinidad de ellos?
Tal vez hayas visto qué papel desempeña nuestro universo en el plan de las cosas: el de un átomo en una hoja de hierba. ¿Podría ser acaso que todo lo que percibimos, desde el virus infinitesimal hasta la remota nebulosa de la Cabeza de Caballo, esté contenido en una mera hoja de hierba... que quizá sólo lleva existiendo uno o dos días en un sistema temporal ajeno? ¿Y si esta hoja fuese segada por la hoz? Cuando comenzara a morir, ¿se infiltraría la descomposición en nuestro propio universo y en nuestras propias vidas, volviéndolo todo amarillento, pardusco y marchito? Puede que eso ya haya comenzado a suceder. Decimos que el mundo ha cambiado; tal vez lo que queremos decir en realidad es que ha comenzado a secarse.
¡Piensa en cómo nos empequeñece este concepto de las cosas, pistolero! Si hay un Dios que lo contempla todo, ¿administra Él acaso la justicia para una raza de mosquitos entre una infinidad de razas de mosquitos? ¿Verá su ojo cómo cae la golondrina, cuando la golondrina es menos que una mota de hidrógeno que flota inconexa en las profundidades del espacio? Y si en verdad lo ve... ¿cuál debe de ser la naturaleza de un Dios tal? ¿Dónde vive? ¿Cómo es posible vivir más allá del infinito?
Imagínate las arenas del desierto de Mohaine, que cruzaste para encontrarme, e imagínate un trillón de universos - no mundos, sino universos - encapsulados en cada grano de arena de ese desierto; y dentro de cada universo, infinidad de ellos. Nos erguimos sobre esos universos desde nuestro patético punto de observación en una hoja de hierba; con un golpe de tu bota puedes sumir en la oscuridad un billón de billones de mundos, en una cadena que nunca podrá completarse.
El Tamaño, pistolero... El Tamaño...


Sun 3 Apr

Benchmark de MySQL

La herramienta típica para hacer Benchmark de MySQL es sysbench http://sysbench.sourceforge.net/

Se hace en dos pasos:

  • Preparar la tabla sobre la que se hará el testeo:
sysbench --test=oltp --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=xxxxx
 --mysql-table-engine=innodb --oltp-table-size=1000000 prepare

Donde se indica que el driver será mysql, la base de datos test y el engine innodb con un tamaño de 1000000. La tabla tendrá el siguiente formato:

CREATE TABLE `sbtest` (`id` int(10) unsigned NOT NULL auto_increment, 
`k` int(10) unsigned NOT NULL default '0', `c` char(120) NOT NULL default '', 
`pad` char(60) NOT NULL default '', PRIMARY KEY  (`id`), KEY `k` (`k`));

  • Una vez preparada, lanzamos el benchmark:
sysbench --test=oltp --db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=xxxxx
--max-requests=10000 --num-threads=10 run

Lanzará 10 threads con un máximo de 10000 peticiones.

Si se desea volver a lanzar el benchmark es necesario eliminar la tabla de testo, reiniciar MySQL para vaciar buffers y caches.

Para ver todas las opciones existentes:

http://sysbench.sourceforge.net/docs/#database_mode

Ajustar el valor max_connections

max_connections es un valor que no se puede poner al azar, ya que afecta al funcionamiento de la aplicación y establece el máximo de memoria que MySQL podrá utilizar. La fórmula para calcularlo es:

(read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack 
+ join_buffer_size) * max_connections

Por lo tanto, si los buffers anteriores suman 70 megas y ponemos 10.000 conexiones máximas, MySQL se creerá que tiene para gestionar 680 GB de RAM.

Imaginemos entonces que la máquina tiene 3gb. Como los 680 no los va a intentar reservar al iniciio no hay problema, pero el aceptará conexiones sin parar y llegará un momento en el que se superen los 3 gigas. Como MySQL cree que tiene 680, seguirá aceptando conexiones y todas empezarán a fallar, las nuevas y las actuales por errores de falta de memoria. Al final, aunque indiques 10.000 conexiones máximas, tu máquina no las gestionará y tirarás a bajo todo el servicio con poco más de 50 conexiones.

Por lo tanto, si MySQL te suelta un error de número máximo de conexiones superadas, no pongas 1 millon, no se soluciona nada. Baja los buffers, aplica la formula e intenta ajustarlo para permitir el mayor número de conexiones sin degradar el rendimiento.

0 Comments · Tags: