in

Código Malvado | Escalabilidad en sititos Web con ASP.NET

Last post 04-30-2007 22:05 by jfbonnin. 1 replies.
Page 1 of 1 (2 items)
Sort Posts: Previous Next
  • 04-25-2007 11:44

    • gjaume
    • Top 10 Contributor
    • Joined on 03-07-2007
    • Posts 14
    • Points 274

    Código Malvado | Escalabilidad en sititos Web con ASP.NET

    Hola a tod@s,

    Aquí os paso un articulo muy interesante acerca de la escalabilidad de los sitios web creados con ASP.NET. Es cierto que se ha escuchado por muchos foros que estos sitios Web creados con ASP.NET no son muy escalables... pues bien en este artículo se trata este tema.

    Tratan los motivos que dan lugar a esta poca escalibilidad y como poder solucionarlos.

    Espero sea de vuestro interés. Saludos.

    eConcept Consulting
    Internet Business Solutions
    http://econcept.es

    eConcept Consulting
    Internet Business Solutions
    http://econcept.es
    Filed under:
    • Post Points: 22
  • 04-30-2007 22:05 In reply to

    Re: Código Malvado | Escalabilidad en sititos Web con ASP.NET

    Hola,

    Los conceptos que se manejan en ese artículo son muy importantes, sobre todo ahora que está tan de moda utilizar AJAX en todos los sitios para mejorar la experiencia de usuario. El modelo de threading the ASP.NET no se conoce mucho, de hecho, la mayoría de los problemas de escalabilidad se deben a una mala programación de las aplicaciones web.

    ASP.NET utiliza el thread pool del CLR para resolver las peticiones que recibe, este pool está configurado por defecto a 25 threads por procesador, hay que tener claro que esta configuración afecta a todo el servidor con lo que no vale decir, bueno por una página lenta que haya ... porque esa página puede degradar el rendimiento no solo de la aplicación en la que esté corriendo sino de todo el servidor. Recordad que en IIS 5.0 se utiliza un modelo para resolver las peticiones distinto de IIS 6.0 y hay que tenerlo en cuenta.

    También tenéis que tener en cuenta que no hay que confundir conceptos, las llamadas asíncronas sólo nos servirán si no utilizamos worker threads del mismo proceso, si resulta que cogemos la petición en nuestra página ASP.NET y la ejecutamos en otro thread utilizando por ejemplo ThreadPool.QueueUserWorkItem no ganaremos nada, puesto que el thread que se cree se solicitará del mismo pool.

    Hay muchas formas de mejorar el rendimiento de un sitio web con un arquitectura bien pensada, como por ejemplo, la utilización de caches, podemos no solo utilizar caches en páginas web, sino que también podemos hacerlo en web services mediante el uso de atributos sobre los métodos ([CacheDuration=XX]).

    En cualquier caso por mucho que pensemos nuestra aplicación, lo mejor como siempre es testear y medir resultados, no basta con suponer. Si tenéis una aplicación web haced test de stress, monitorizar los performance counters que ASP.NET ofrece, abrid el perfom.exe y añadid contadores como Requests Queued, el cual os indicará las peticiones que se van encolando, Available Worker Threads, Available IO Threads, etc. Es la única manera de saber mínimamente como se comportarán nuestras aplicaciones cuando las pasemos a producción.

    Saludos.

    Jose Fco Bonnin
    -----------------------
    Coordinador Baleares on .NET
    www.josefcobonnin.com
    Filed under: ,
    • Post Points: 5
Page 1 of 1 (2 items)
Baleares on .NET®
Powered by Community Server (Commercial Edition), by Telligent Systems