Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/11/2003, 17:25
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 2 meses
Puntos: 51
Eummm, vamos por fases de nuevo.
Si el numero de conexiones que das es real (500-10000 simultaneas) entonces agarrate al asiento que vendran curvas :). Ese numero es demasiado elevado, creo, por que si no vas a tener un problema de los buenos. Simplemente conseguir un servidor de BDD que pueda mantener todas esas conexiones abiertas a la vez ya daria suficientes dolores de cabeza ;).
.- A no ser que tengas mucho tiempo, reconvertir tu sistema de muuchos servlets en uno monoservlet seria prácticamente re-escribirlo todo, asi que no creo que sea una opción. Si tienes tiempo, casi lo mejor es usar algun framework que sea ligero, tipo WebWorks , y usar algo que ya este hecho. Nosotros hicimos el nuestro pero eso era antes de que hubiera ninguno disponible.
.- Lo que si puedes hacer es revisar el codigo que gestiona las conexiones a la BDD. Sobre lo que has escrito despues -> Hacer un stmt.close() NO CIERRA la conexion a la BDD, cierra el Statement pero la conexion sigue abierta. Ademas, si tienes peticiones simultaneas al mismo servlet y no tienes codigo de sincronización ESTAS USANDO LA MISMA CONEXION a la vez en varios sitios, asi que te dara errores, seguro. Si pruebas a crearla en cada peticion el rendimiento sera terrible, asi que me reitero: usa un pool de conexiones para acceder a las conexiones, usarlas y devolverlas al pool, La estructura del try/catch/finally es muy correcta, asi que adaptarla a un pool no te deberia ser dificil. Inicializa el pool en el init de algun servlet que tenga load-on-startup o, mejor aun, en un listener de eventos cuando se crea el servlet context.
.- La conexion a la base de datos que usas tiene escrito jdbc:odbc... pero supongo que no estaras usando el puente ODBC-JDBC del JDK, no? Esta totalmente desrecomendado por Sun para cualquier aplicación mas alla de un "HelloWorld-JDBC". Mejor consigue un driver JDBC para tu base de datos y olvidate del puente ODBC, te ahorraras problemas y aumentaras el rendimiento.
.- Aparte de eso, TESTEA TU APLICACIÓN antes de ponerla en produccion, es decir, instala una herramienta de estres (como el Web Application Stress Tool de Microsoft o el JMeter de Apache) y simula la carga que se supone tendra la aplicación, con usuarios simultaneos, trafico intentso etc. Te ahorraras muchas sorpresas ya que las pruebas manuales no se parecen, ni por asomo, al trafico real.
Suerte
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.