2. Descripción:
• http://iplocationtools.com/samples.html
• La idea principal es crear un web services un una computadora
personal, con recursos de procesamiento limitados,
comparados con los disponibles en cualquier servidor.
• Teniendo en cuenta esto, el objetivo es lograr procesar el
mayor numero de clientes en forma concurrente. Para ello se
investigo sobre plataformas y optimización de las mismas. En
este trabajo se probo Apache 2.2 y WebLogic 11g como
plataformas.
4. Memcached
• Memcached es un sistema distribuido de propósito general para caché basado en
memoria.
• Fue desarrollado inicialmente por Brad Fitzpatrick para su sitio web
(www.livejournal.com), el 22 de Mayo del 2003
• Memcached es empleado para el almacenamiento en caché de datos u objetos en la
memoria RAM, reduciendo así las necesidades de acceso a un origen de datos
externo (como una base de datos o una API). Memcached tiene versiones todos los
S.O. y se distribuye bajo licencia de software libre permisiva.
• Su funcionamiento se basa en una tabla hash distribuída a lo largo de varios equipos.
Conforme ésta se va llenando, los datos que más tiempo llevan sin ser utilizados se
borran para dar espacio a los nuevos. Normalmente, las aplicaciones comprueban
primero si pueden acceder a los datos a través de Memcached antes de recurrir a un
almacén de datos más lento, como puede ser una base de datos.
• Este sistema es empleado por varios de los sitios más activos y visitados de la red,
como YouTube, Reddit, Playdom, Zynga, Facebook y Twitter. Heroku ofrece un
servicio de Memcached gestionado con NorthScale como parte de su PaaS. Google
App Engine ofrece también un servicio de memcached a través de un API.
5. Memcached(Arquitectura)
• El sistema usa una arquitectura cliente-servidor. Los servidores mantienen un array asociativo
clave-valor; los clientes añaden datos al array y acceden a él. Las claves pueden tener una
longitud de hasta 250 bytes y los datos pueden tener un tamaño de hasta 1 megabyte.
• Los clientes usan librerías cliente para acceder a los servidores que, por defecto, utilizan el
puerto 11211 Cada cliente mantiene una lista de todos los servidores; los servidores no se
comunican entre ellos. Si un cliente desea establecer o leer el valor correspondiente a cierta
clave, la librería cliente primero hace un cálculo mediante un algoritmo hash para determinar el
servidor que va a utilizar. Entonces se pone en contacto con el servidor y éste usará otro hash
para determinar dónde almacenar o leer el valor correspondiente.
• El servidor mantiene los valores en RAM. Si un servidor agota su memoria, descarta los valores
más antiguos. Por tanto, los clientes deben de tratar Memcached como una cache transitoria; no
pueden asumir que los datos almacenados en Memcached estarán ahí cuando los necesiten. Un
producto compatible a nivel de protocolo con Memcached llamado MemcacheDB proporciona
almacenamiento permanente. Hay también una solución llamada Membase de Northscale que
proporciona persistencia, replicación y clustering.
• Para que un cliente pueda leer los datos almacenados por otro cliente, deberían ambos usar el
mismo algoritmo hash para localizar los servidores.
• Un despliegue típico tendría varios servidores y muchos clientes. Sin embargo, es posible usar
Memcached en un único ordenador, actuando simultáneamente como cliente y servidor.
7. Apache 2.2.19
MPM BeOS beos
Netware mpm_netware
(Módulos de MultiProcesamiento)
OS/2 mpmt_os2
Por defecto (mpm_winnt) Unix prefork
Windows mpm_winnt
C:Apache2.2confextrahttpd-mpm.conf
winnt MPM
ThreadsPerChild : número constante de subprocesos de trabajo en cada proceso de
servidor. El limite máximo es de 1920 cuando se usa mpm_winnt. Por defecto es de
64 threads igual al de los otros modos
MaxRequestsPerChild : número máximo de solicitudes sirve un proceso de servidor
Fuente: http://httpd.apache.org/docs/2.0/mpm.html
8. Apache MPM (mpm_winnt)
Habilitar la configuración de mpm:
• C:Apache2.2confhttpd.conf
• # Server-pool management (MPM specific)
• Include conf/extra/httpd-mpm.conf (habilitar sacando “#”)
• # Various default settings
• Include conf/extra/httpd-default.conf (habilitar sacando “#”)
• C:Apache2.2confextrahttpd-default.conf
• Timeout 3
• KeepAlive On
• MaxKeepAliveRequests 0
• KeepAliveTimeout 1
9. WebLogic Estándar Edition 11g
• http://localhost:7001/console/
• Despliegues/[clase del servicio]/Configuracion
• Despliegues/[clase del servicio]/Prueba
• WSDL: http://[host]:7001/IPWebLogic2-WebLogic2-context-
root/consultaipSoap12HttpPort?WSDL
• http://[host]:7001/console/dashboard
Server Mode . . . Default Thread Count . . .
Development 15 threads
Production 25 threads
15. Monitoreo de Recursos
• Control PanelAll Control Panel ItemsPerformance Information and
ToolsAdvanced ToolsResourse Monitor
16. SOAPUI
• Es una herramienta de Software Libre gráfica, está basada en Java y sirve para el testeo de Web
Services y generación de clientes de Web Services.
• Esta herramienta nos permite automatizar fácilmente las pruebas funcionales y así asegurar la calidad
en nuestros proyectos.
• Las pruebas funcionales de los web services podrían usarse para más de un propósito.
• Pruebas unitarias: para validar que cada operación de los servicios funciona como se definió.
• Prueba de aceptación: para validar que el servicio retorna resultados aceptables según los requerimientos.
• Pruebas de proceso: para validar que una sucesión de invocaciones del servicio cumple con el proceso de negocio definido.
• Pruebas de manejo de datos: para validar el comportamiento con las entradas de datos externos al sistema (bases de datos, otros
sistemas, uso de otros web services).
• Pruebas de regresión: para validar el comportamiento post cambios.
• Permite generar un número de threads, configurable, que actúen como usuarios virtuales,
consumiendo el servicio en un lapso de tiempo estipulado
• Posibilita establecer casos de test con parámetros de entrada, con los cuales los usuarios virtuales van
a enviar solicitudes al web services.
• Ofrece la ventaja de poder, establecer rangos de tiempo de repuestas esperados, como así también
validar las repuestas obtenidas.
• Permite observar el resultado del análisis de carga en forma gráfica como así también detalladamente
por cada caso de test, en caso de generarse errores posee un log en el cual se puede observar la causa
del error.
• Brinda la posibilidad de verificar los web services si están bien estructurados de acuerdo a la WS-I
18. Test:
• Se dividió el test en 2 categorías:
• Tests con servidor Apache + PHP: se generara pruebas
individuales, cambiando el número de threads soportados por
Apache. Además se fue ajustando el número de conexiones
concurrentes permitidas por MySQL como así también el
tamaño de la memoria cache del motor de base de datos
• Test con servidor Weblogic + Java: teniendo en cuenta que la
cantidad de threads se ajusta automáticamente en weblogic,
las pruebas no incluirán cambios de threads como en Apache.
Se realizaran cambios en el tamaño de memoria de JVM,
además de ir cambiando la cantidad de conexiones
concurrentes y el tamaño de cache de MySQL.
25. Conclusiones:
• Como se mencionó anteriormente el objetivo de este trabajo es lograr poder dar un
buen servicio al mayor número posible de usuarios virtuales concurrentes, es por ello
que el rango que nos interesa en las tablas anteriores es de 200, 250, y 300 usuarios
concurrentes.
• Además se expresa la implementación de web services con una capacidad de
procesamiento de un interesante número de clientes concurrentes, en una
computadora de uso personal, con recursos limitados, sin disponer de un servidor.
Teniendo en cuenta lo expuesto se puede mencionar que el presente trabajo ha
demostrado la gran ventaja que nos brinda una correcta optimización de la
plataforma como así también del motor de base de datos.
• A continuación se mencionan, las acciones realizadas y los resultados obtenidos de las
mismas:
26. Conclusiones:
Apache:
• Podemos ver que la iniciar las pruebas partimos con 134 solicitudes promedio con un
tiempo promedio de 11 ms para 300 usuarios virtuales. Con las optimizaciones se
logra una combinación de configuraciones que permite alcanzar las 265 solicitudes
promedio con un tiempo promedio de 12 ms. Se logró duplicar el número de
solicitudes casi manteniendo el mismo tiempo promedio entre la “escritura” de la
solicitud y “lectura” de la repuesta. La combinación que permitió alcanzar esto es la
de: ThreadsPerChild = 200; max_conecctions (MySQL) = 100; query_cache_size = 50M
• Es importante destacar que cuando permitimos 50 threads concurrentes en apache y
lo probamos con 300 usuarios virtuales, sin importar la cantidad de conexiones
permitidas en mysql ni el tamaño del query cache, logramos lo que se conoce como
ataque de denegación de servicio. Apache rechaza todas las solicitudes (connection
refused).
27. Conclusiones:
WebLogic:
• Debido a la característica de ajuste automático de conexiones concurrentes, se obvio
este parámetro, ya que se ajusta automáticamente a demanda.
• En este caso partimos con una base de 248 solicitudes promedio en un tiempo
promedio de 11 ms para 300 usuarios concurrentes. Se logró alcanzar un numero
promedio de 1173 solicitudes en 3 ms, gracias a la siguiente combinación: jvm = 512-
1024 / 256-512; max_conecctions (MySQL) = 200; query_cache_size = 50M
28. Conclusiones:
• Podemos ver claramente que el web services que se ejecuta sobre weblogic supero al
ejecutado en apache
• En el momento de mejorar el funcionamiento del motor de base de datos, el mismo
ofrece configuraciones predeterminadas ejecutando MySQLInstanceConfig.exe. Esta
aplicación analiza los recursos disponibles de hardware (memoria, HD, y CPU),
teniendo en cuenta estos valores y de acuerdo al tipo de instancia elegida (Developer
Machine, Server Machine, Dedicated MySQL Server Machine), MySQL configura
automáticamente los parámetros del mismo. Es importante aclarar que también
ofrece la configuración de forma manual.
• Podemos observar que no solo basta con optimizar la plataforma de ejecución sino
que es altamente necesario optimizar también los parámetros de procesamiento del
motor de base de datos.
29. Bibliografía:
Para la realización del proyecto se tendrá en cuenta las presentaciones de la presente http://code.google.com/p/siena/
especialización: http://www.sienaproject.com/index.html
• Construcción de aplicaciones sobre infraestructuras distribuidas. Profesor: e-mail autor: gimenete@gmail.com
Mariano Cilia
• Ingeniería de Documentos. XML, WSDL. Profesora: Laura Alonso Alemany WebLogic:
• Proceso de desarrollo de Software: Patricio Maller • Título: Oracle WebLogic 11gR1 on Windows 7
Ademas mediante internet se realizaran consultas a las siguientes bibliografías on- Link: http://oracledwbi.wordpress.com/2010/04/03/oracle-weblogic-11gr1-
line: on-windows-7/
Fecha: 03/04/2010
Web Services: Autor: Suds Kumar (Hemel Hempstead, United Kingdom)
• Título: Introducción a los Web Services en PHP Link datos del autor: http://oracledwbi.wordpress.com/about/
Link: http://www.desarrolloweb.com/articulos/1852.php • Título: BEA WebLogic Server® 9.0 Documentation
Fecha: 03/03/2005 Link: http://docs.oracle.com/cd/E13222_01/wls/docs90/index.html
Autor: Orlando Fabián Brea Fecha: 2011
Link datos del autor: http://www.desarrolloweb.com/contacta/133.html Autor: BEA Systems
• Título: Web Services: XML-RPC, SOAP, sobre PHP, Perl, y otros conceptos Link datos del autor:
Link: http://www.programacion.com/articulo/web_services:_xml-rpc-_soap- http://www.oracle.com/us/corporate/acquisitions/bea/index.html
_sobre_php-_perl-_y_otros_conceptos_211/4 • Título: Oracle WebLogic Server: Una Base Sólida para la Arquitectura Orientada
Autor: Martin Valdivia a Servicios
Escalabilidad: Link: http://www.oracle.com/technetwork/es/documentation/317511-esa.pdf
• Título: Evaluación del desempeño en aplicaciones web Fecha: 2008
Link: http://www.sabetodo.com/contenidos/EkpEApkllACvuLULwX.php Autor: Oracle
Fecha: 01/2008 Link datos del autor:
Autor: Yoemny González Almaquer http://www.oracle.com/lad/corporate/index.html?ssSourceSiteId=otnes
Link datos del autor: http://www.desarrolloweb.com/contacta/133.html
Conexiones persistentes:
• Título: Conexiones persistentes MySQL Para que ? Que Son ?
Link:http://www.vbhispano.com/foros/f35/conexiones_persistentes_mysql_p
ara_que_que_son-1651/
Fecha: 01/10/2004
Autor: Danny Bembibre Gude
Link datos del autor: http://www.vbhispano.com/foros/u919.html
• Título: Siena: persistencia en Java sencilla y escalable
Links:
http://es.debugmodeon.com/articulo/siena-persistencia-en-java-sencilla-y-
escalable
30. Bibliografía:
Configuración Weblogic Autor: Chris Muir
• Título: A Manual Configuration of WebLogic Server Link datos del autor: http://chrismuir.sys-con.com/
Link: • Título: Instalar Weblogic 10.3.3.0 y Desplegar en él una aplicación ADF 11g
http://download.oracle.com/docs/cd/E12058_01/doc/doc.1014/e12026/app_ Link: http://fetishcode.wordpress.com/2010/10/17/instalar-weblogic-10-3-3-
orminweblogic.htm 0-y-desplegar-en-el-una-aplicacion-adf-11g/
Fecha: 2008,2009 Fecha: 17/10/2010
Autor: Oracle Autor: Herman Alonso
Link datos del autor: • Título: JDBC Connection Pool Performance Tuning
http://www.oracle.com/lad/corporate/index.html?ssSourceSiteId=otnes Link: http://weblogicserveradministration.blogspot.com/2010/10/jdbc-
• Título: Automatizar Java Performance Tuning connection-pool-performance-tuning.html
Link: http://www.oracle.com/technetwork/es/articles/adf/brahms-tuning- Fecha: 23/10/2010
096558-esa.html Autor: Mukesh Negi
Fecha: 09/2008 Link datos del autor:
Autor: Carl Brahms http://www.blogger.com/profile/00868823116792559637
• Título: BEA WebLogic: Guía de Administración
Título: Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine Link:
Link: http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html http://www.programacion.com/articulo/bea_weblogic:_guia_de_administraci
Fecha: 2003 on_144/8
Autor: Sun Microsystems, Inc. Fecha: 23/10/2010
Link datos del autor: http://en.wikipedia.org/wiki/Sun_Microsystems Autor: j calvo
• Título: Top Tuning Recommendations for WebLogic Server • Título: WebLogic 11g Overload Protection in the Cloud
Link: Link: http://www.munzandmore.com/2010/ora/weblogic-11g-overload-
http://download.oracle.com/docs/cd/E11035_01/wls100/perform/topten.htm protection-in-the-cloud
l Fecha: 14/09/2010
Fecha: 2011 Autor: Dr. Frank Munz
Autor: BEA Systems Link datos del autor: http://www.munzandmore.com/about
Link datos del autor:
http://www.oracle.com/us/corporate/acquisitions/bea/index.html
• Título: Writing a WebLogic Startup Script
Link: http://www.dummies.com/how-to/content/writing-a-weblogic-startup-
script.html
Autor: Jeff Heaton
Link datos del autor: http://www.jeffheaton.com/
• Título: Configuring WebLogic Server Domain/Machine/Server instances with
the JDeveloper 11g ADF installer
Link: http://chrismuir.sys-con.com/node/952411/
Fecha: 04/01/2009
31. Bibliografía:
MySQL Link: http://www.soapui.org/Load-Testing/loadtest-execution.html
• Título: MySQL 5.5 Reference Manual Fecha: 15/10/2009
Link: http://dev.mysql.com/doc/refman/5.5/en/ Autor: Eviware
Fecha: 09/11/2011 Link datos del autor: http://www.eviware.com/
Autor: MySQL • Título: Simulating different types of Load
Link datos del autor: http://dev.mysql.com/doc/index-about.html Link: http://www.soapui.org/Load-Testing/simulating-different-types-of-
• Título: Optimizando el servidor Mysql load.html
Link: http://www.rinconinformatico.net/optimizando-el-servidor-mysql Fecha: 15/10/2009
Fecha: 09/01/2010 Autor: Eviware
Autor: Epsilon Link datos del autor: http://www.eviware.com/
Link datos del autor: http://www.rinconinformatico.net/acerca • Título: LoadTest Window
• Título: Acelerar el rendimiento de MySQL con la cache Link: http://www.soapui.org/Load-Testing/load-test-window.html
Link: http://www.codigomaestro.com/mysql/acelerar-el-rendimiento-de- Fecha: 13/10/2009
mysql-con-la-cache/ Autor: Eviware
Fecha: 14/06/2008 Link datos del autor: http://www.eviware.com/
Autor: MySQL • Título: Strategies
Link datos del autor: http://dev.mysql.com/doc/index-about.html Link: http://www.soapui.org/Load-Testing/strategies.html
• Título: MySQL: Optimizar el rendimiento de lectura Fecha: 13/10/2009
Link: http://www.guatewireless.org/tecnologia/bases-de-datos/mysql- Autor: Eviware
optimizar-el-rendimiento-de-lectura/ Link datos del autor: http://www.eviware.com/
Fecha: 28/11/2008
Autor: fher98
Link datos del autor: http://www.guatewireless.org/
• Título: How to Optimize MySQL server
Link: http://techgurulive.com/2009/07/14/how-to-optimize-mysql-server/
Fecha: 14/07/2009
SoapUI:
• Título: Pruebas funcionales de servicios web con soapUI
Link:
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=pruebas-
funcionales-soapui
Fecha: 28/12/2009
Autor: Iván García Puebla
Link datos del autor: http://es.linkedin.com/in/ivangarciapuebla
• Título: Creating and Running LoadTests
32. Bibliografía:
Apache:
• Título: Versión 2.2 de la documentación del Servidor de HTTP Apache PHP:
Link: http://httpd.apache.org/docs/2.2/ • Título: Manual de PHP
Fecha: 2011 Link: http://www.php.net/manual/es/
Autor: The Apache Software Foundation Fecha: 2011
Link datos del autor: http://www.apache.org/foundation/ Autor: the PHP Documentation Group
• Título: Tunear Apache con cabeza Link datos del autor: http://www.php.net
Link: http://miguelcarmona.name/notas-y-recortes/tunear-apache-con-cabeza • Título: A HOWTO on Optimizing PHP
Fecha: 14/02/2011 Link: http://phplens.com/lens/php-book/optimizing-debugging-php.php
Autor: Miguel Carmona Fecha: 30/10/2009
Link datos del autor: http://miguelcarmona.name/blog Autor: phplens.com
• Título: Optimizar apache Link datos del autor: phplens.com
Link: http://www.codenb.com/optimizar-apache-16/
Fecha: 29/08/2007
Autor: The Apache Software Foundation
Link datos del autor: http://www.apache.org/foundation/
• Título: Apache Performance Tuning
Link: http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Fecha: 2011
Autor: The Apache Software Foundation
Link datos del autor: http://www.apache.org/foundation/
• Título: Apache MPM winnt
Link: httpd.apache.org/docs/2.2/mod/mpm_winnt.html
Fecha: 2011
Autor: The Apache Software Foundation
Link datos del autor: http://www.apache.org/foundation/
• Título: Configuring Apache for Maximum Performance
Link: http://bobcares.com/blog/?p=71
Fecha: 08/01/2006
Autor: Vishnu Ram
Link datos del autor: http://www.apache.org/foundation/
• Título: Optimizing MySQL and Apache for Low Memory Usage, Part 1
Link: http://emergent.urbanpug.com/?p=60
Fecha: 05/10/2006