Etiquetas
Esto es un boboapunte, pero es que ya no puedo reprimirme. Cuando llegó a 50.000 minutos lo hice, pero ahora con 60.000 ya no aguanto las ganas 🙂
790 ? Sl 60235:33 /usr/sbin/mysqld
La línea anterior muestra que el servidor del MySQL (del servidor del Menéame) consumió más de 60.000 minutos de CPU desde la última vez que se reinició –en una actualización de seguridad–, son casi 42 días completos de CPU.
El status da la siguiente salida:
Server version: 5.0.51a-3-log (Debian)
...
Uptime: 79 days 18 hours 10 min 21 sec
...
Threads: 287 Questions: 6812282200 Slow queries: 51042 Opens: 64030 Flush tables: 1 Open tables: 497 Queries per second avg: 988.574
Está en marcha sin parar hace casi 80 días –a punto de dar la vuelta al mundo– y sin nada de «mantenimiento». En ese período recibió casi 7.000 millones de consultas a casi 1.000 consultas por segundo de media con picos que superan los 10.000 consultas por segundo, sobre una base de datos que no es minúscula –más de 2 millones de comentarios, casi 400.000 artículos y más de 25 millones de votos registrados–.
No está nada mal para una base de datos que tiene sus limitaciones [*] y que hay que tratarla con cariño en las consultas, pero que difícilmente pueda ser batida en estabilidad y eficiencia.
No está nada mal, aunque el FUD no enterprise ready continúa a pesar de la evidencia de los años.
[*] La versión que tenemos es la de etch-backports, ya que la que está en Etch tiene problemas con algunas consultas full-text en UTF-8. También necesitó su trabajo de tuning en las consultas e índices, pero de eso no se escapa ninguna base de datos que tenga que deba dar tiempos de respuestas tan bajos como los que se necesita en las aplicaciones web en general y el Menéame en particular –que necesita hacer muchas consultas diferentes para generar cada página–.
Desde que me dedico a esto de la programación siempre me han endosado oracle como base de datos en cualquier desarrollo importante, esto que dicen que es una bbdd para empresas. En ningun caso se justifica el precio que se paga por una licencia de oracle pudiendo usar mysql o postgres, que son tan o más competentes que oracle.
Cada vez que he tenido que instalar oracle ha sido una odisea, montar mysql o postgres un simple apt-get y ya está.
En cambio las administraciones públicas siguen empeñadas en gastar sumas importantes en oracle, y siguen empeñadas en gestionar costosos procesos de mantenimiento. Llegará algún día en que alguien ponga orden en todo esto? No sé, pero creo que no.
Pues, #1, sabiendo cómo es la gente (y los informáticos somos personas), no creo que la mentalidad de la gente cambie hasta que mysql o cualquier otro DBMS destaque muchísimo por algo o hasta que haya un cambio generacional.
Me temo, y hablo desde la ignorancia, que dos de las más poderosas razones que mueve a las empresas a elegir una «tecnología» u otra son el hype, el capricho y la costumbre (de las tres, esta es la más justificada).
Eso me recuerda a mi debian box del trabajo que pasa fácilmente los 100 días de uptime entre las actualizaciones del kernel, y porque hay que reiniciar que sino no se apaga a menos que se abra la tierra a sus pies.
Subversion, Cruise Control, Apache, PHP, Exim, Trac, MySQL, backups, … esta siempre con algo entre las manos.
Mientras tanto el Windows 2003 que tiene al lado casi nunca pasa de 30 días de uptime, la última vez se fue el SQL a tomar viento sin explicación aparente. En fin, que voy a decir que no se sepa ya …
Lo único que puedo hacer es demostrarles a mis jefes la valía del soft libre con números sobre la mesa.
a mi una vez me dijero que el 10% de algo és mayor que el 10% de nada…
por otra parte te encuentras en que empresas creadoras de software para administraciones publicas solo usan BBDD de pago, lease Oracle, MSSQL, supongo que por la misma razón que antes.
Todo el mundo que ha administrado sistemas críticos sabe que Windows _no_ es Enterprise Ready. Ni SQL Server. Ni Exchange Server. Oracle es posiblemente bastante mejor que cualquiera de los productos mencionados anteriormente, sobre todo cuando se ejecuta sobre Solaris SPARC. Lo que es indudable es que el precio que cuesta ejecutar Oracle sobre Solaris es excesivo sobre todo cuando MySQL o PostgreSQL funcionan tan bien en la inmensa mayoría de los casos.
No me puedo reprimir y tengo que hacerte dos preguntas:
– ¿Que tamaño (datos+indices) tiene la tabla de votos?
– ¿Que concurrencia tiene (max_connections)?
Lo otro, impresionante, muy buenos resultados :-D,
Toni, max_connections está en 800, pero habitualmente entre 250 y 350. Excepcionalmente llega a 500 y pico.
Por los tamaños:
-rw-rw—- 1 mysql mysql 234280928 2008-06-17 23:44 links.MYD
-rw-rw—- 1 mysql mysql 89153536 2008-06-17 23:44 links.MYI
-rw-rw—- 1 mysql mysql 76006752 2008-06-17 23:44 votes.MYD
-rw-rw—- 1 mysql mysql 204402688 2008-06-17 23:44 votes.MYI
-rw-rw—- 1 mysql mysql 606188124 2008-06-17 23:44 comments.MYD
-rw-rw—- 1 mysql mysql 137103360 2008-06-17 23:44 comments.MYI
-rw-rw—- 1 mysql mysql 9504180 2008-06-17 23:44 logs.MYD
-rw-rw—- 1 mysql mysql 5252096 2008-06-17 23:44 logs.MYI
-rw-rw—- 1 mysql mysql 181116756 2008-06-17 23:44 tags.MYD
-rw-rw—- 1 mysql mysql 62739456 2008-06-17 23:44 tags.MYI
-rw-rw—- 1 mysql mysql 136423995 2008-06-17 23:44 users.MYD
-rw-rw—- 1 mysql mysql 9511936 2008-06-17 23:44 users.MYI
-rw-rw—- 1 mysql mysql 6116936 2008-06-17 23:40 posts.MYD
-rw-rw—- 1 mysql mysql 1586176 2008-06-17 23:40 posts.MYI
-rw-rw—- 1 mysql mysql 9724 2008-06-17 23:40 categories.MYD
-rw-rw—- 1 mysql mysql 4096 2008-06-17 23:40 categories.MYI
-rw-rw—- 1 mysql mysql 19571628 2008-06-17 23:39 trackbacks.MYD
-rw-rw—- 1 mysql mysql 22739968 2008-06-17 23:39 trackbacks.MYI
-rw-rw—- 1 mysql mysql 392652 2008-06-17 23:39 friends.MYD
-rw-rw—- 1 mysql mysql 1056768 2008-06-17 23:39 friends.MYI
-rw-rw—- 1 mysql mysql 921840 2008-06-17 23:38 geo_users.MYD
-rw-rw—- 1 mysql mysql 1181696 2008-06-17 23:38 geo_users.MYI
-rw-rw—- 1 mysql mysql 1205074 2008-06-17 23:37 favorites.MYD
-rw-rw—- 1 mysql mysql 2747392 2008-06-17 23:37 favorites.MYI
-rw-rw—- 1 mysql mysql 42524240 2008-06-17 23:37 bans.MYD
-rw-rw—- 1 mysql mysql 3228672 2008-06-17 23:37 bans.MYI
-rw-rw—- 1 mysql mysql 6892624 2008-06-17 23:27 blogs.MYD
-rw-rw—- 1 mysql mysql 3985408 2008-06-17 23:27 blogs.MYI
-rw-rw—- 1 mysql mysql 2804816 2008-06-17 23:27 geo_links.MYD
-rw-rw—- 1 mysql mysql 4919296 2008-06-17 23:27 geo_links.MYI
-rw-rw—- 1 mysql mysql 35240124 2008-06-17 23:16 avatars.MYD
-rw-rw—- 1 mysql mysql 112640 2008-06-17 23:16 avatars.MYI
-rw-rw—- 1 mysql mysql 1481273 2008-06-17 23:09 prefs.MYD
-rw-rw—- 1 mysql mysql 108544 2008-06-17 23:09 prefs.MYI
-rw-rw—- 1 mysql mysql 2048 2008-06-17 06:53 votes_summary.MYI
-rw-rw—- 1 mysql mysql 2478 2008-06-17 06:31 votes_summary.MYD
-rw-rw—- 1 mysql mysql 4096 2008-01-27 06:13 pageloads.MYI
-rw-rw—- 1 mysql mysql 1008 2008-01-27 01:50 pageloads.MYD
-rw-rw—- 1 mysql mysql 0 2008-01-15 02:46 sph_counter.MYD
-rw-rw—- 1 mysql mysql 1024 2008-01-15 02:46 sph_counter.MYI
-rw-rw—- 1 mysql mysql 40 2006-12-21 00:58 languages.MYD
-rw-rw—- 1 mysql mysql 3072 2006-12-21 00:58 languages.MYI
Es bastante pedir, pero sería bastante divertido y didáctico un artículo sobre la arquitectura de base da datos de meneame. El tener que abarcar una alta carga habrá necesitado de ciertas decisiones de arquitectura (mysql estándar o mysql cluster), modelado especial de los datos, políticas ha, tipo de tablas, configuración especial del OS, tunning de mysql, y un largo etc.
Hay artículos por ahí sobre el tema, pero seguro que no todos se basan en unas necesidades como las de meneame.
Curiosidad: Si quieres saber que ocupan los datos e índices (no el fichero en sí que tiene más información), puedes ejecutar la siguiente consulta:
select table_name , data_length+index_length as Tamaño from tables where table_schema=’MENEAME’; // Sustituye MENEAME por el schema correspondiente, y si quieres saber el de una tabla en concreto, añade AND table_name=’TABLA_EN_CONCRETO’. Todo en la tabla information_schema 🙂
Estoy de acuerdo con #8 😀
A muchos se les caería la cara que Facebook, uno de los sitios con más tráfico en internet se mueve con mysql:
http://swik.net/facebook-database
Si alguien pudiera explicar algunos métodos usados en Facebook para ahorrar trabajo a la base de datos estaría bien para aprender algo nuevo.
#8 Aitor,
todo el esquema y las consultas están publicadas y en realidad es tan simple que casi me da vergüenza intentar explicarlo como si fuese complicado.
La bbdd está centralizada en un sólo servidor y hay una réplica que sólo se usa para los scripts (no web) que hacen consultas pesadas a la bbdd y para backup en tiempo real.
Todo el trabajo consistió en simplificar al máximo la bbdd y consultas (la menor cantidad de joins posibles), analizarlas mucho para crear los índices adecuados y a veces cambiar los sql por otros mejores.
Luego mucho trabajo de «debug» para detectar las «slow queries» que iban quedando.
#1 Vamos a palmos, MySql es una gran base de datos para según que cosas. No haré el discurso fácil. MySql es una buena base de datos con un backend del tipo MyIsam donde el rendimiento qita sitio a features como integridad referencial, plena transaccionalidad. MySql por eso hará unos años incluyo innodb como backend, pero des de un punto de vista muuuy distante. InnoDb desarrollaba un backend bastante bueno, rapido y con muchas de las features majotas que los admin de compañias pedian. Entonces MySql lo integraba y podía decir que tenia una base de datos completa.
Esto está cambiando y mucho des de la compra por parte de Sun, Falcon el nuevo backend que subsitutirá a innodb està al caer. La gente de MySql ahora a empezado a dar fuerte con todas las pijerias necesarias para tener un backend que no de ascos a los dinosaurios de segun que corporaciones. Y esto que quiere decir ?
Buenos las grandes corporaciones, digase bancos, hace años que juegan con unas arquitecturas de bases de datos muy enfocadas a las soluciones de Oracle. MySql tiene dos opciones para sacar tajada de estas corporaciones. Acercarse a sus modelos de arquitectura o bien esperar a que los nuevos ingenieros entren en massa y modiquen las actuales estructuras monolíticas. Creo que acertadamente MySql jugará las dos partidas.
Faceebook funciona con MySql, si claro pero con una capa de memcached y con mas de 800 servidores.
Creo que uno de los elementos mas importantes de meneame y que ha dicho Gallir es que el rate de slow querys es de alrededor del 0.0007%, sin esto no esperes tener 300 o 400 conexiones concurrentes en un servidor MySql.
Saludos
> Creo que uno de los elementos mas importantes de meneame y que ha dicho Gallir es que el rate de slow querys es de alrededor del 0.0007%, sin esto no esperes tener 300 o 400 conexiones concurrentes en un servidor MySql.
Exacto… y vamos eliminando a medida que las descubrimos. Además la inmensa mayoría son de consultas manuales que hicimos o dumps de la base de datos (el dump cada tabla cuenta como una «slow query»).
De hecho con que haya una sola slow query desde el web, si tarda más de un par de segundos prácticamente «tira abajo» (en el sentido que bloquea a muchos por mucho más tiempo) el servidor por la acumulación de conexiones concurrente.
PS: También usamo memcached para minimizar las consultas lentas, por ejemplo la página de «populares», la caja de etiquetas y los mejores comentarios.
Pingback: Desmitificando la tecnología « lboisset’s Ruminations
Creo que normalmente las empresas se inclinan por Oracle sobre todo por su soporte técnico que es sumamente bueno, claro es cierto, nada justifica ese precio tan elevado por las licencias. Practicamente cualquier empresa grande puede usar mySQL o postgree siempre y cuando cuenten con personal realmente competente…
Saludos!
#11 gracias por explicar la arquitectura, en un principio pense que quizas pudierais tener la db sobre mysql cluster con tablas en memoria y con vários nodos en modo activo.
Para los interesados en el tema quizas les pueda interesar el libro
http://www.amazon.com/gp/product/0596101716/ref=lst_llp_sl-1
o el blog http://www.mysqlperformanceblog.com/
Si alguien necesita dar referenciabilidad, sobre proyectos muy conocidos que utilizan mysql, puede encontrarlos en http://highscalability.com/
Si he entendido bien, hace 80 días que tienes al MySql funcionando sin parar. Si bien es meritorio, no es nada del otro mundo. He visto BBDD Oracle (de las grandes) con 6 meses de uptime (sobre AIX). Y eso por no hablar de DB2. Pregunta en cualquier banco grande.
#5: Felipe, comprendería que dijeras eso de Windows XP conectado directamente a Internet, sin antivirus ni firewall y gestionado por un usuario con conocimientos superficiales de informática. Pero de ahi a afirmar que los sistemas internos (aislados de Internet y muchas veces también de la red de usuarios) de una empresa, gestionados por profesionales, no sean Enterprise Ready, ya me parece una exageración. Algunos de los servidores Windows que gestionamos para un grán cliente de alcance nacional han pasado los 9 meses de uptime (particularmente los ADs y muchos de los nodos Exchange). Su sistema Exchange gestiona unos 15.000 buzones en total y unos 15Tb de espacio en disco, por lo que una instalación pequeña no es…
#17 Andy, no has captado el tema.
Ya sé que Oracle podría aguantar, no lo niego en ningún momento, casi lo contrario.
Pero, ¿sobre AIX? ¿cuánto han gastado por eso?
Otro, ¿está conectada o es de una aplicación de Internet? ¿Y se pasó seis meses sin ninguna actualización de seguridad en la BBDD y en el sistema operativo? Porque las limitaciones de «Uptime» en GNU/Linux o MySQL suelen ser las actualizaciones.
Ricardo,
Por eso te he dicho que preguntes en algún banco grande. La burocracia que hay que pasar para poder actualizar cualquier pedazo de software es increíble. No se andan parando los sistemas cuando le parece bien al administrador. Hay que pedir un cambio, el comité de cambios se reune, la gente de autitoría y la de seguridad lo analizan, etc, etc, etc. A menos que sea un cambio mega-crítico, verás que las actualizaciones tienden a hacerse en Agosto, cuando hay un valle en la carga de trabajo.
Con respecto a MySQL, Linux, etc… Bueno, imagínate una propuesta pasando por toda esa burocracia… Los pocos proyectos que he visto implementados con software libre han sido con SuSE o RedHat y un contrato de soporte 7×24 con alguna empresa reconocida detrás.
Creo que nadie dice que no esten «Enterprise Ready» en un sentido técnico. Pero para poder ser adoptado en empresas grandes, la superioridad técnica no basta.
> Por eso te he dicho que preguntes en algún banco grande. La burocracia que hay que pasar para poder actualizar cualquier pedazo de software es increíble.
Sí, pero es que los bancos no son ni de lejos un ejemplo a tomar sobre la implantación de tecnologías. Por varias razones:
1. Tienes estructuras internas de TI muy piramidales.
2. Que entre otras cosas los hace muy conservadores. Aunque se entiende que «tienen que tener las luces encendidas» se pasan bastante (he trabajado con un par de bancos).
3. Tienen mucha pasta para permitirse #1 y #2, tampoco es habitual.
> Con respecto a MySQL, Linux, etc… Bueno, imagínate una propuesta pasando por toda esa burocracia…
Estaremos de acuerdo en que el problema a solucionar quizás sea la burocracia.
> Creo que nadie dice que no esten “Enterprise Ready” en un sentido técnico.
No, también lo dicen en sentido técnico. Suele pasar porque es el argumentos de los comerciales, y en estructuras piramidales conservadores parece que es mejor o muy fácil sobrevivir repitiendo los mismos argumentos.
«No está nada mal, aunque el FUD no enterprise ready continúa a pesar de la evidencia de los años.»
Espero que con noticias como esta se vayan acabando esos fuds
Yahoo ha montado una bbdd de 2 petabytes sobre postgresql….(segun ellos la mas grande del mundo)
http://www.computerworld.com/action/article.do?command=viewArticleBasic&taxonomyId=18&articleId=9087918&intsrc=hm_topic
Ciertamente el rendimiento es impresionante.
¿Podrías decirnos también la máquina que corre ese servidor (CPU, memoria, etc.)?, ¿qué carga media tiene?, ¿base de datos está en innodb o myisam?.
La verdad es que estaría interesante un post con más detalles. 😉
Otro buen ejemplo… en entornos de desarrollo con las aplicaciones de repositorios., en mi empresa usamos IBM Rational Clearcase, que requiere de bastante mantenimiento y tiene un coste brutal. Y luego existen bastantes alternativas GPL que aunque no las haya probado, si que me consta que van mucho mejor.
#11 Ricardo,
comentas que tienes un esclavo para realizar scripts(no web) y para el backup. Que te parece una estructura tipo esclavo-maestro donde el primero se encarga de las peticiones de lectura y el segundo de las de escritura? Se balancea la carga entre ambos servidors y directamente se tiene que ver afectado el tiempo de respuesta
Saludos,
Está claro que las PYMEs (y start-ups) son las primeras en elegir postgres y mysql. Es probable que baste con una o dos personas con las ideas claras para tomar la decisión.
Hola Ricardo:
Aunque no está relacionada con bases de datos, esta noticia ejemplifica cómo el software libre no está para nada preparado para las empresas.
Should Carriers Fear Open Source?
http://www.internetnews.com/dev-news/article.php/3753811/Should+Carriers+Fear+Open+Source.htm
(llegué a ella a través de boycottnovell.com)
__________________________________________________
Pardus 2008
http://www.pardus.org.tr/eng/index.html
Como a mí ya me conoces y sabes que prefiero una MySQL a un Oracle, aprovecharé para mencionar, así de pasada, el motivo fundamental por el que las empresas gordas usan oracle:
– El rendimiento del motor es muy bueno. Como mínimo tan bueno como el de MySQL
– Tiene montones de herramientas adminsitrativas gráficas que proporcionan información al detalle con un par de «clicks»
– Tiene varias herramientas muy buenas como Oracle Designer que, aunque sólo se usen para la fase de diseño permiten mantener muy bien un DER de 1000 tablas.
– Tiene varios entornos de desarrollo propietarios. El más famoso el Developer + Reports. Clásico cliente servidor donde programando PL con una herramienta gráfica se pueen hacer 3 ó 4 formularios de complejidad media en una jornada de trabajo.
– Puede venir acompañada de todo tipo de servicios de datos o red como LDAP, servidores de aplicaciones J2EE…
– Dispone de extensiones para Bussiness Intelligence, Data Mining…
– Después de varios movimientos empresariales, cuenta con aplicaciones de terceros para gestión financiera, gestión de RRHH intentando atacar el mercado de SAP.
Yo creo que lo que hay que plantearse es: Dada la indiscutible calidad de MySQL sobre todo para aplicaciones web… ¿Es necesario invertir (en dinero y falta de libertad) en licencias de productos Oracle? La mayoría de veces la respuesta es no.
El responsable de TI no se ha parado a pensar si necesitaba o no y ha decidido gastar unos milloncejos pensando en que la pegatina de Oracle le salvaría el culo.
A Sun le queda mucho trabajo para igualar las prestaciones de la familia Oracle. De momento tienen una guerra fundamental ganada: MySQL es libre.
Ayer, después del programa de radio, tuve que escuchar otra vez que «el software libre si pero todavía no». Lo decía gente que no debería tener dudas con el software libre en el 2008. Que organiza cosas como http://www.ines.org.es/ A estas alturas lo máximo que se deberían permitir es convivir con la inercia del software privativo.
– «Con MySQL tuvimos muchos problemas de rendimiento. Cuando hacen falta consultas con cálculos complejos, según como haya que mover cursores, nada como un Oracle».
– «El problema es el soporte, que haya alguien detrás».
– «El software libre tiene más bugs, pasa que no está tan extendido ni tan probado, por eso parecen menos».
Al oir estas cosas soy expeditivo: los profesionales que lo hicieron no sabían más. Se puede dar soporte de pata negra, tenemos el código, se puede aprender en verso. Pero primero hay que saber leer. Es penosa la calidad de muchos profesionales de informática. Debieron ir más allá de los wizard siguiente-siguiente-siguiente a la hora de optimizar su código:
«Clippo Codemonkey ha detectado que estás escribiendo una consulta, ¿quieres optimizarla ahora? [Si] [No] [Avisarme más tarde] [Termínala tu que el SQL me aburre]»
Muy poco profesionales, esos informáticos que añoran los servicios de soporte (de muchos Eur la consulta) para no tener que investigar. Si lo hicieran, investigar un poco, podrían convertirse ellos en el servicio de soporte. Tan bueno como quisieran: aprender configuración, hacks, conocer el código, controlar las actualizaciones. Pero prefieren los wizard.
Me niego a discutir sobre los bugs del software privativo comparándolos con los del software libre. Nadie puede mirar el código del privativo para verlos, la informática es una ciencia aplicada y no una paraciencia. Si no podemos examinar el código no podemos hablar de errores. De algo que no se puede examinar sólo puedo hablar de resultados. Analicemos qué sucede en un terreno donde el software libre está mucho más extendido que el privativo: qué sucede con los IIS y los Apache. Con los MySQL y los SQL Server.
Si los informáticos montaran restaurantes, sólo habría McDonalds. ¿Y esa salsa, cómo está hecha? Da igual, el sobre es amarillo, es la más extendida, made in multinacional de la hostia que hace una publi muy
pijacool, la encuentras en Teruel y en Singapur, llegan en 24h cuando pides más, y tienes un teléfono para el consumidor y otro para intoxicaciones, cubiertas por un seguro del fabricante. ¿Dice que hay restaurantes locales, que no son de ninguna franquicia ni nada, que la preparan cada día? ¿Fresca? ¿Qué es fresca? Nosotros también la guardamos en la nevera, ¿eh?Se lo regalo, su mundo. Y que tengan suerte con el colesterol.
«El problema es el soporte, que haya alguien detrás»
Una afirmació com per a pensar-la amb calma… es dóna a moltes interpretacions. No trobes?
#29 Cap interpretació, sinó una realitat: quan al 96 vaig tenir un problema amb un Microsoft Exchange Server. No podien descarregar el correu més de 2 usuaris simultanis. Després de donar-li mil voltes, sense trobar la solució, vam telefonar al suport de Microsoft. Ens demanaren més de 20.000 Pts per la resposta. Pagarem. La resposta fou que era un bug conegut i que el proper Exchange ho tendria resolt.
Ara només instal·lo Postfix. Quan algú em telefona per un problema puc arribar fins on vulgui. No em cap al cap la possibilitat que no pugui veure fins al darrer racó d’allò del que ofereixo suport, i perquè això passi el programa ha de ser lliure. Si no me’n poden fer una altre com la del Exchange, i haver-ho de preguntar als sacerdots que tenen l’exclusiva dels secrets –després de passar per caixa, clar.
Cal no confondre servei de suport a l’usuari amb servei de recolzament espiritual per l’usuari. El primer és ciència aplicada, el segon religió. La religió serveix per a sentir-se segur sense pensar gaire. Per fer ciència cal pensar molt i tot són dubtes 😉