Programación, linux y mas...

Mostrando entradas con la etiqueta Rendimiento. Mostrar todas las entradas
Mostrando entradas con la etiqueta Rendimiento. Mostrar todas las entradas

miércoles, 22 de agosto de 2012

Configuración de un Pool de conexines con BoneCP

Actualmente le doy mantenimiento a un proyecto que se conecta a una BD MySQL, la carga al inicio no era muy grande y por simplicidad use la configuracion por defecto que me ofrece Spring para el DataSource:

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
    p:driverClassName="${dataSource.driver}"
    p:url="${dataSource.url}"
    p:username="${dataSource.username}"
    p:password="${dataSource.password}" />

La aplicación fue crecienco en cuanto a usuarios y transacciones, esto le pego al rendimiento y detecte que el problema se debia al pobre o nula administración de las conexiones a la BD, por tal motivo me di a la tarea de investigar como solventar esto y me encontre con BoneCP el cual se define asi mismo como una libreria para administrar el pool de conexiones de facil y libre uso.

Para descargar mediante Maven, colocar en el pom las siguientes dependencias:

<dependency>
        <groupId>com.jolbox</groupId>
    <artifactId>bonecp</artifactId>
    <version>0.7.1.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.jolbox</groupId>
    <artifactId>bonecp-spring</artifactId>
    <version>0.7.1.RELEASE</version>
</dependency>

Finalmente mi DataSource quedo de la siguiente manera:

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
        <property name="driverClass" value="${dataSource.driver}" />
        <property name="jdbcUrl" value="${dataSource.url}" />
        <property name="username" value="${dataSource.username}"/>
        <property name="password" value="${dataSource.password}"/>
        <property name="idleConnectionTestPeriod" value="60"/>
        <property name="idleMaxAge" value="240"/>
        <property name="maxConnectionsPerPartition" value="30"/>
        <property name="minConnectionsPerPartition" value="10"/>
        <property name="partitionCount" value="3"/>
        <property name="acquireIncrement" value="5"/>
        <property name="statementsCacheSize" value="100"/>
        <property name="releaseHelperThreads" value="3"/>
    </bean>

Probado y puesto en producción exitosamente. Saludos!!!
Publicado por José B. Viera Rebolledo en 21:21 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
Etiquetas: BD, Java, Rendimiento, Spring

lunes, 30 de julio de 2012

Manten limpio tu sistema LMDE

Si son como yo que se la pasan instalando y desistanlando software, descargando y borrando archivos, despues de un tiempo es necesario limpiar todo rastro de esas pruebas, borrar archivos inecesarios y en resumen mantener limpio nuestro sistema, existen un programas que uso a menudo Deborphan

Instalar Deborphan:
$ sudo aptitude install deborphan

Eliminar librerias huerfanas:
$ sudo dpkg --purge $(deborphan)

Borrar todo rastro despues de desinstalar un paquete:
$ sudo dpkg --purge $(deborphan --find-config)



Posterior a esto lanzamos el siguiente comando:
$ aptitude update && aptitude safe-upgrade && aptitude full-upgrade && aptitude clean && aptitude autoclean

Listo con esto ya deberiamos tener limpio y actualizo nuestro sistema, hasta la próxima. 
 
 

Publicado por José B. Viera Rebolledo en 21:06 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
Etiquetas: LMDE, Rendimiento, Tip

viernes, 6 de julio de 2012

Rendimiento en Linux disminuyendo el SWAPPING

Para todos aquellos que trabajan con sistemas Linux se les debe hacer muy familiar el termino "swap", para los que no, la swap es un area o partición del disco duro que sirve de intercambio o almacenamiento temporal de datos cuando existen procesos muy pesados corriendo y la memoria RAM resulta insuficiente, el proceso en el cual la RAM transfiere datos a la swap se le llama SWAPPING. Es obvio que si nuestra PC realiza constantemente este proceso el rendimiento del sistema se veria afectado y se notario lento, esto se debe por que el acceso al disco duro es mas lento que el acceso a la RAM.

Para las maquinas actuales que cuenten con 4GB de RAM o mas hay una solución, consta en disminuir el acceso a la swap lo mas que se pueda, esto se logra agregando el parametro "swappiness" al sistema, primeramente confirmemos el valor por default:

$ sudo cat /proc/sys/vm/swappiness

por lo general los sistemas vienen configurado con el valor 60 (siempre sera un valor entre el 0 y el 100), esto significa que cuando se llegue a un 40% del uso total de la RAM se haga uso de la swap, mientras nuestro valor tienda mas al cero menos se usara la swap, yo recomiendo actualizar este valor a 20, de esta forma solo si se hace uso de hasta el 80% de nuestra RAM se usara la swap.

Modificamos el valor de la siguiente manera:

$ sudo sysctl vm.swappiness=20

Probamos abriendo varios programas y si notamos mejoria podriamos hacer el cambio permanente modificando el siguiente archivo:

$ sudo gedit /etc/sysctl.conf

y agregamos la siguiente linea al final del archivo: vm.swappiness=20
guardamo y reiniciamos nuestro sistema.
Publicado por José B. Viera Rebolledo en 23:39 No hay comentarios:
Enviar por correo electrónicoEscribe un blogCompartir en XCompartir con FacebookCompartir en Pinterest
Etiquetas: Linux, Rendimiento, Tip
Entradas antiguas Inicio
Suscribirse a: Entradas (Atom)

Etiquetas

  • APIs (1)
  • BD (2)
  • Buenas practicas (1)
  • Java (14)
  • JSF (1)
  • Linux (4)
  • LMDE (4)
  • Primefaces (1)
  • Programacion (13)
  • Rendimiento (3)
  • Seguridad (1)
  • Spring (2)
  • Tip (2)
  • Utilerias (1)

Datos personales

José B. Viera Rebolledo
Soy un desarrollador y analista de sistemas informaticos, apoyo la filosofia del software libre y creo que el conocimiento debe ser de libre acceso para todos.
Ver todo mi perfil

Archivo del blog

  • ▼  2012 (21)
    • ▼  septiembre (1)
      • Clases abstractas e interfaces
    • ►  agosto (2)
    • ►  julio (6)
    • ►  junio (4)
    • ►  mayo (1)
    • ►  abril (7)
Tema Picture Window. Con la tecnología de Blogger.