Gravatar de Armonth

Cesarius y sobre avisar por email de futuros comentarios

Llevo dos tardes con Cesarius para ver si podemos mejorar el desempeño y si bien ha mejorado bastante todavía podría ir mejor… bueno ahora al menos es aceptable… suponiendo que el enlazarlo desde aquí no lo vuelva a saturar }:P.

El caso es que le hemos metido bastante mano:

  • PHP CGI fuera.
  • Buhonejo quitado y Google Sitemaps actualizado.
  • Desactivados widgets, puesto el sidebar “a mano” (11 llamadas SQL menos ¡!).
  • Desactivado un plugin de Google Analytics que su único fin era mostrar el código JS en la web, además el mismo se ha quitado de la cabecera y se ha puesto en el pie de página.
  • Media docena de cosas más que no me acuerdo…

Y la guinda final ya ha sido total: el sidebar.php tenía un include a images/index2.php, un fichero que en la plantilla por defecto no existe y que sólo contenía lo siguiente:

<?
$bots=array('ooglebot', 'yahoo', 'live', 'msn');
$y=0; for($i=0; $i<sizeof($bots); $i++)
if(strstr(strtolower($_SERVER["HTTP_USER_AGENT"]), strtolower($bots[$i]))) $y=1;
if($y){
  include('rq.txt');
}
?>

Seguramente no os hace falta que explique que es, vamos no hay que ser ningún lumbreras: si el HTTP_USER_AGENT concuerda con el de Googlebot, Yahoo, Live o MSN pues se incluye el fichero rq.txt. ¿Qué contiene el fichero rq.txt? Un bonito listado de 60 enlaces para comprar pastillitas azules y otros bonitos amiguitos. Toca incluir un pantallazo para recordar :-P

Así que también hemos tenido que actualizar todo WordPress, sus plugins, cambiar contraseñas del panel dreamhost / ssh / mysql y de los usuarios del propio WordPress…

Avisar por email de futuros comentarios

Lo último que hemos desactivado — para ver si es le damos la puntilla que le falta al sitio — es la opción de “Avisame por email de nuevos comentarios”. Como dice Cesar, es un plugin que ayuda y mucho a generar discusión aunque a mí cuando no me doy cuenta y no quito la cruz se me antoja pesado recibir 30 emails con comentarios.

Pero el tema es ¿qué impacto puede tener esa opción en el rendimiento del sitio?. En un servidor dedicado no mucha pero en uno compartido (y que además ya anda como anda) pues no sabría que decir. Además de que eso lo gestiona una aplicación en PHP y que seguramente debe cargar todo WordPress para enterarse del nuevo comentario y enviar los emails. Supongamos una discusión en que se generan 25 comentarios:

  • El primer comentarista recibirá 24 emails.
  • El segundo comentarista recibirá 23 emails.
  • Así hasta el último comentarista que no recibirá ninguno.

Por 25 comentarios se pueden enviar tranquilamente 290 emails. He mirado en la bandeja Maildir/new y había 2817 emails de Postfix informando de problemas al enviar esos comentarios a distintas cuentas: unas por no existir y otras por dar timeout.

Y eso en principio es poco, pero hay que mirarlo en escala: si un spam se cuela en un post de 100 comentarios, se enviaran 100 emails aunque a los diez minutos lo borres. Lo mismo con las trolleadas y los offtopic brutales que, sin exagerar, se borran a docenas diariamente…

¿Merece la pena? Quizá los lectores de feed tendrían que tener una opción “suscribir a los comentarios” para hacer más fácil la conversación (que eso de tener que copiar el permalink a mano por cada entrada que nos interesa es una cutrada). Y siempre tenemos el feed con los últimos comentarios, disponible por defecto en cualquier instalación de WordPress.

20 Comentarios (feed)

  1. Gravatar de j_aroche j_aroche nos comenta:

    uuu si eso de sucribirse a los comentarios por correo es malísimo, y más aún cuando el check box está marcado por defecto y en cada comentario debes desmarcarlo porque no estas interesado en seguir los comentarios…. muchas personas no se dan cuenta de ese checkbox y terminan recibiendo correos indeseables.

    Domingo, 15 de Julio/2007 @ 23:48

  2. Gravatar de Esparta Palma Esparta Palma nos comenta:

    >>¿Qué contiene el fichero rq.txt? Un bonito listado de 60 enlaces para comprar pastillitas azules y otros bonitos amiguitos.

    Y solo es el inicio, quizàs es para que dejen de quejarse de DH sin argumentos, no se como pueden vivir con un server comprometido de ese modo!!

    Lunes, 16 de Julio/2007 @ 0:20

  3. Gravatar de Román C Román C nos comenta:

    Creo que hay una errata aquí:
    $bots=array(’ooglebot’, ‘yahoo’, ‘live’, ‘msn’);

    ¿Debería ser así?
    $bots=array(’googlebot’, ‘yahoo’, ‘live’, ‘msn’);

    Lunes, 16 de Julio/2007 @ 0:28

  4. Gravatar de Román C Román C nos comenta:

    Uy, olvida mi post anterior…

    Lunes, 16 de Julio/2007 @ 0:30

  5. Gravatar de Oscar Oscar nos comenta:

    ¿Y cómo llegó ese rq.txt al sidebar ?

    Lunes, 16 de Julio/2007 @ 4:46

  6. Gravatar de Armonth Armonth nos comenta:

    Esparta, Oscar lo he dicho: toco actualizar WordPress. Una versión vieja del mismo :\. Al menos (¿?) el atacante lo hizo de tal manera que no consumia recursos extras…

    Lunes, 16 de Julio/2007 @ 9:28

  7. Gravatar de javi javi nos comenta:

    Me encanta el diseño de Cesarius! Un 10!

    Lunes, 16 de Julio/2007 @ 11:18

  8. Gravatar de felix felix nos comenta:

    A mi el diseño me gusta.
    Mirando un poco con el firebug, me da que hay un pequeño problema con default.css, no lo encuentra error 404 y cuando lo encuentra tarda 5 segundos en cargarlo..ahi lo dejo.
    saludos.

    Lunes, 16 de Julio/2007 @ 12:17

  9. Gravatar de maty maty nos comenta:

    Pingdom Tools Cesarius.net

    Ahora el tiempo de carga son 29 segundos, muy excesivo todavía.

    La suscripción por correo es desaconsejable si se utiliza un servidor web compartido, siendo muchísimo mejor el sumario RSS de comentarios.

    Evidentemente, Dreamhost ha empeorado muchísimo, como era de esperar al recibir tal avalancha de cuentas. Sus servidores, supongo, están muy saturados. Yo prefiero ser cabeza de ratón a cola de león a la hora de elegir hosting. Por 4 dólares/mes (y sin pagar impuestos) se encuentran hostings muy decentes, y con un servicio de atención de primera, y en castellano.

    Aunque ralentice un tanto, lo mejor es alojar las imágenes de las anotaciones en un servicio externo, como una cuenta gratuita en Flickr, con lo que el consumo de ancho de banda se minimiza muchísimo, amén de facilitar la posterior migración de hosting, de ser necesario.

    También conviene quitar trabajo al Akismet, filtrando los comentarios y trackbacks (en la bitácora Una temporada en el infierno de Quiñonero hace un par de meses que no entra spam alguno, tras las modificaciones que hice).

    Por cierto, si os interesa el dato, sólo tarda 0.9 segundos.

    Pingdom Tools unatemporadaenelinfierno.net

    Evidentemente, se podría reducir el tiempo de carga alojando las imágenes en el propio servidor, pero creo que con ese tiempo de carga no es necesario…

    Nota: al evitar que trabaje Akismet, la carga de CPU en el servidor web compartido se redujo en TREINTA VECES.

    Lunes, 16 de Julio/2007 @ 12:33

  10. Gravatar de Armonth Armonth nos comenta:

    Maty: no concuerdo en buena parte. Es cierto que Dreamhost a veces tiene servidores compartidos que no van bien y es que por defecto usa PHP-CGI en lugar de FastCGI o mod_php por lo que la gente se satura ella solita.

    Si bien es cierto que tienen una carga bastante importante también es cierto que en general a poco que te molestes va bien. Mira SigT: tarda de media 1 o 2 segundos, algo más cuando le doy caña al server y eso que le tengo puesto algun script que deberia optimizar…

    De esa web no está mal lo de la carga aunque también hay que decir que es un diseño muy-muy minimalista.

    Por último, felix tiene razón: ayer estuve con la mosca detrás de la oreja porque se me olvidaba algo y es justo lo que dice felix: que el tema K2 intenta cargar cuatro veces un default.css fallando en 3 de ellas, provocando 6 segundos de latencia por cada default.css no cargado.

    Lunes, 16 de Julio/2007 @ 13:51

  11. Gravatar de El Barto El Barto nos comenta:

    Solamente unos detalles que vi al pasar y quise compartirlos. En el código de PHP siendo que de optimizar se trata, sugeriría el siguiente código:

    Cambios y justificaciones:
    - El más importante es cambiar la función strstr por strpost. Como dice el manual de PHP, si lo único que se quiere determinar es si existe un string dentro de otro, es más óptimo usar strpos porque es más rápido y utiliza menos memoria (http://ar.php.net/strstr)
    - Quitar variable $y. Si puede evaluarse directamente la condición, no se ve la necesidad de asignar una variable más, por más que solamente se vaya a guardar un 0 ó un 1.
    - Uso del include_once. Solo por las dudas. Si se está haciendo un bucle, aunque la condición del IF solamente debería ser verdadera en un caso, no está de más decirle a PHP que incluya el archivo una sola vez.
    - Uso del foreach. Esto es solo por comodidad mía, pero pueden usar el for. A mí me resulta un poco más claro así.

    No quiero parecer molesto con mis comentarios. Solamente quería compartirlos por si les ayuda.

    Si el objetivo de poner en el array de $bots el elemento “ooglebot” era para que sea case-insensitive (por si viene Googlebot o googlebot), lo que se puede hacer es utilizar la función stripos en vez de strpos. Funciona igual pero es case-insensitive. En tal caso quedaría asi:

    $bots=array(’googlebot’, ‘yahoo’, ‘live’, ‘msn’);
    foreach ($bots as $bot)
    {
    if(stripos(strtolower($_SERVER[”HTTP_USER_AGENT”]), $bot))
    include_once(’rq.txt’);
    }

    Saludos

    Lunes, 16 de Julio/2007 @ 14:38

  12. Gravatar de felix felix nos comenta:

    hombre nunca se va a conseguir la velocidad de tu pagina, el diseño es realmente minimalista, me gusta, optimizado al maximo y rapido.

    Tema hosting, yo no me suele complicar la vida, todos los hosting dan mil cosas, mil gigas, mil cuentas mil de todo, que al final acabas utilizando solo una, dos, 3 o a lo sumo cinco. Prefiero hosting un poco mas pequeño pero controlable, y con mi idioma. Os remito el hosting con el que estoy yo ahora, parece publicidad, pero solo espongo que a mi me va bien. Lo unico es español, central en Madrid, asi que si el “publico” objetivo es de sudamerica es mejor mirar uno de alli.
    http://www.eldiariosindiario.com/2-meses-con-hosting-masbaratoimposible/

    Espero os sirva

    Lunes, 16 de Julio/2007 @ 15:04

  13. Gravatar de Armonth Armonth nos comenta:

    El barto, hombre no está mal saberlo pero tampoco es que fuese muy necesario saber sus optimizaciones: era un código de un spammer que había comprometido la página de Cesarius osea que se ha borrado :-P

    Lunes, 16 de Julio/2007 @ 16:16

  14. Gravatar de El Barto El Barto nos comenta:

    Jejeje se ve que no leí muy bien el artículo.
    Digamos solamente entonces que estaba bastante mal escrito el código del spammer :P
    Saludos

    Lunes, 16 de Julio/2007 @ 16:24

  15. Gravatar de maty maty nos comenta:

    Es un diseño de aspecto minimalista, al gusto de su responsable, el escritor/periodista/corresponsal/intelectual Juan Pedro Quiñonero.

    Pero sólo el aspecto. La plantilla no utiliza widgets, y todo el código extra está insertado manualmente, pero incorpora unas cuantas funcionalidades muy útiles (las justas y necesarias), sin distraer la atención sobre lo principal: las excelentes anotaciones.

    Insisto en que es muy recomendable limitar el trabajo de Akismet, que sobrecarga en exceso. Por eso implementé un captcha (suma) para los comentarios y cambié el fichero de los trackbacks, con lo que Akismet sólo revisa lo que dejan pasar los otros dos, trabajando al ralentí (comentarios y trackbacks auténticos).

    También puede obligarse a la vista previa o forzar marcar un casillero (Mangas Verdes), que probé. Pero terminaban colándose vía trackbacks pasado un tiempo, de ahí su substitución por otro fichero. Con el de defecto, siempre los spammers terminan adaptándose, vulnerando cualquier plugin implementado al efecto.

    Si miramos los resultados de Pingdom Tools de UTI: 268.7KB / 1.4 s = 191.9 KB/s

    Pingdom Tools Sigt

    98.6KB / 0.6s = 164 KB/s

    Y eso que las fotografías alojadas en Flickr, creo, ralentizan un tanto la carga, la mayor de las veces.

    Ah, en un servidor moderno, con PHP 5, MySQL 5 y demás a la última, habitualmente.

    Lunes, 16 de Julio/2007 @ 16:55

  16. Gravatar de maty maty nos comenta:

    Termino, la hoja de estilos está muy optimizada, con el código justo y necesario. 7 KB.

    Lunes, 16 de Julio/2007 @ 16:57

  17. Gravatar de maty maty nos comenta:

    Cachis, otra vez está mi comentario en moderación, por poner varios enlaces!!!

    Lunes, 16 de Julio/2007 @ 16:58

  18. Gravatar de Armonth Armonth nos comenta:

    Maty tampoco es que un diseño minimalista sea malo, a lo que me refería es que es incluso más que el mío.

    Yo tampoco uso widgets, en eso somos de la misma opinión: el mínimo código a usar. Yo en lugar de hacer un if con una condición y luego sacar códig vía “echo” prefiero cerrar el PHP con { ?>, mostrar el HTML y luego abrir PHP apra cerrar el if (<?php } ?>).

    Sobre Akismet no insistas, si en eso estamos de acuerdo, yo en lugar de usar captchas prefiero usar trampas tipo input’s ocultos: funcionan muy bien.

    En otro punto en que yo no estoy de acuerdo es en asumir que es culpa de Dreamhost, con la cantidad de servidores que tienen la verdad es que escalan muy bien las necesidades de los usuarios, mejor que muchos que conozco. Lo que pasa es que WordPress en ese sentido tampoco es una maravilla y el hecho de usar CGI por defecto hace que el desconocimiento de lo que significa sumado a WordPress sea una catastrofe.

    Sobre Pingdom Tools no puedo opinar demasiado, no parece mala herramienta pero yo prefiero Firebug (extensión de Firefox) ya que el Pingdom al igual que otras herramientas se pone a cargar cosas que no debería contar por ejemplo a veces me añade 1seg de más por cargar el feed sin venir a cuento :-P

    Otro aspecto importante es que lo que habría que contar siempre es “el diseño”, dependiendo del día puede haber en portada 10 imágenes incluidas en distintas entradas o 0 (cero) imágenes y eso varia mucho.

    Lunes, 16 de Julio/2007 @ 18:56

  19. Gravatar de maty maty nos comenta:

    Por pasos:

    Aspecto minimalista

    UTI tiene un aspecto minimalista, pero implementa funciones avanzadas, como la Búsqueda Avanzada o los Archivos con el plugin ELA, amén del editor enriquecido de los comentarios (muy útil pero que casi nadie utiliza).

    Widgets

    En WP, si se prescinde de ellos, mejor (como también conviene tener acotados los plugins). Hablando de widgets, la semana pasada creé una bitácora de prueba con el CMS Serendipity (también estoy toqueteando otra con SPIP) y me entusiasmó. Tiene muy bien resuelto el tema de los plugins, temas y widgets, y es de carga muy rápida! Sólo le falta, por ahora, un plugin para edición enriquecida de los comentarios.

    Akismet

    Pues eso, que sea el último filtro, no el de defecto. Si la bitácora es exitosa, el volumen de spam diario penaliza en exceso el ancho de banda y el consumo de CPU en el servidor. Ya leí tus anotaciones sobre los inputs. El problema, como he dicho antes, está con los trackbacks (si queremos que sean aprobados automáticamente, sin nuestra autotización). ¿Tu implementación lo tiene en cuenta?

    Firebug

    Es la extensión que utilizo estas semanas que navego con Firefox sin pasar por el proxy local Proxomitron Nauscópico. Así estoy incorporando nuevos filtros antipublicidad, que pronto serán actualizables automáticamente (los del AdBlock). Pingdom Tools lo descubrí el otro día en mis seguimientos diarios de sumarios RSS. Lo he reseñado para que todos pudieran echar un vistazo rápido, puesto todavía demasiada gente se empeña en utilizar el nefasto nefasto nefasto Internet Explorer.

    Diseño

    Por eso lo que importa es el ratio y no el tiempo total de carga.

    Nota: si quieres te paso una cuenta de administrador para que eches un vistazo a las dos bitácoras de pruebas con Serendipity y SPIP (para crear un medio digital). Con las demos no se puede apreciar la potencialidad del primero.

    Lunes, 16 de Julio/2007 @ 20:09

  20. Gravatar de Armonth Armonth nos comenta:

    Se agradece pero ya probé hace un par de semanas el Serendipity además de no tener demasiado tiempo esta semana.

    Sobre todo lo demás concuerdo, de Akismet pues sí y de trackbacks aún no me he puesto: pasan directamente al akismet. Pero no son nada grave, 5 o 6 al día frente a los +500 comentarios spam que tenía antes…

    Lunes, 16 de Julio/2007 @ 20:17

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.