grupo de subprocesos y la agrupación de conexiones

Http solicitud iniciada por el usuario a petición del cliente en la red con un servidor Web ya través del enlace de tres vías para establecer una conexión, el servidor recibe una petición de un grupo de subprocesos para esta re-asignación de trabajo solicita un subproceso de trabajo, el subproceso de trabajo se inicia el procesamiento de la lógica de negocio en el trato con las empresas la lógica de procedimiento, se aplica a la conexión de un pool de conexiones de base de datos JDBC, realizar la ABM, solicitud de devolución de recursos devueltos terminados el resultado. Este proceso es cada desarrolladores Web son la cara escena muy familiar todos los días. Hay dos elementos muy importantes, en este escenario de grupo de subprocesos y la agrupación de conexiones .
grupo de subprocesos y la agrupación de conexiones es un conjunto de recursos, su concepto y la confusión de roles.
gestión de hilos de rosca de la piscina, tiene como objetivo hacer un uso completo de IO debido a la obstrucción causada por los recursos de CPU.
agrupación de conexiones para gestionar conexiones, reutilización de recursos de conexión para crear un mayor costo.
La agrupación de conexiones está trabajando en hilo de trabajo, su posición y su papel es completamente diferente del método parámetro de configuración son completamente diferentes.
La figura siguiente:

función de grupo de subprocesos

programa de multiproceso puede maximizar el uso del poder de los procesadores de varios núcleos de computación, mejorando el rendimiento y el rendimiento del software, pero si no es manejada y controlada hilo uso excesivo de memoria, cambio de contexto hará que la CPU son adversamente impacto. Por lo que la función es gestionar el hilo de rosca de la piscina, las capacidades básicas incluyen:

  • la creación del hilo (incluyendo el establecimiento de la rosca nombre, prioridad, demonio y otros bienes, limitar el número total de hilos)
  • Recepción de la tarea, las tareas de programación de subprocesos de trabajador
  • subproceso de escucha de captura de correr
  • hilo destruido

Funciona grupo de subprocesos

clase de implementación del grupo de subprocesos JDK es ThreadPoolExecutor, Echemos un vistazo a las notas sobre la fuente cómo explica por sí mismo:
ExecutorServiceel uso de los recursos de rosca puesta en común para llevar a cabo la tarea, que es el principal problema es la optimización de un gran número de asíncrona hilo de ejecución de la tarea y, al mismo tiempo, los recursos de tareas gestión.
variables miembro de clase desde el punto de vista de la composición de ThreadPoolExecutorlos miembros principales constituyentes son ctl workQueue workers threadFactory rejectedExecutionHandler
ctl: ctl control de esa abreviatura, es un campo representa dos propiedades, uno es el grupo de subprocesos en funcionamiento, el otro es el número de hilos activos en el grupo de subprocesos. En el proceso de ejecución de las operaciones de grupo de subprocesos, comprobará ambos estados para determinar el comportamiento del grupo de subprocesos. ThreadPool proporciona valor calculado estado, hilo de piscina número de hilos, y el bit vale CTL Operación Funciones
trabajadores: conjunto de trabajo de las discusiones, tareas (ejecutable) del ThreadPoolExecutor ser realizado encapsulado Workeren Workerel interior encapsulado trabajador tarea ejecutable, y necesita ser realizada .
WorkQueue: el bloqueo de cola, para la carga de la tarea para ser ejecutada no se ha realizado
threadFactory: hilo de fábrica de creación, que define un método newthread (), un hilo es creado por la fábrica a la medida, por ejemplo, establecer el nombre de la prioridad de subprocesos y otros atributos. Por ejemplo grupo de subprocesos Tomcat utilizar TaskThreadFactorypara crear un hilo, se le dará el hilo definido nombre_de_grupo, namePrefix, daemon, la prioridad de varias propiedades.
RejectedExecutionHandler: roscado manejador de tareas negativa, al momento de enviar la tarea al grupo de subprocesos, como si no pudiera ser recibida será utilizada rejectHandler hilo de basuras. Las estrategias comunes se han negado a mirar en cuatro categorías:

  • Emite RejectedExecutionException cuando Abortar la política después de que el grupo de subprocesos está lleno, presentar un nuevo trabajo, esta es la política de denegación predeterminada.
  • política de descarte es una tarea directamente descartados cuando se presente.
  • CallerRuns estrategia se presentará en el momento de la falla, la misión presentada directamente por el hilo presentar tareas.
  • DiscardOldest estrategia descarta la primera presentación ante la tarea.
    Habiendo descrito la composición de la agrupación de hebras, a continuación se describen la piscina proceso hilo flujo:

  • Cuando se envía la tarea al grupo de subprocesos, compruebe en primer lugar la corriente es mayor que el número de subprocesos que se ejecutan coreSize, si no más que crear un hilo de núcleo para realizar la tarea.
  • Si hay más de coreSise, se determina que la cola de tareas es completa, si no pone completa se añade la tarea a la cola de tareas en espera de un hilo suelto de la ejecución.
  • Si la cola de tareas está llena, se determina que el número actual de hilos es mayor que maxSize, si no más que se crea el nuevo hilo para realizar tareas.
  • Si ya ha alcanzado maxSize, se negó a ejecutar la estrategia.
    Es de destacar que, en el grupo de subprocesos del grupo de subprocesos proceso continuará para comprobar el estado, si un no-estado Running, ya no recibirá la tarea, pero se negó a ejecutar la estrategia.

grupo de subprocesos tiene su propio estado:RUNNING SHUTDOWN STOP TIDYING TERMINATED

  • RUNNING: la recepción de una tarea y llevar a cabo la tarea o tareas en la cola para su ejecución.
  • APAGADO: ya no recibir ninguna función, pero la tarea se ejecutará en la tarea se ha completado.
  • STOP: ya no recibe ninguna tarea, ya no manejar la cola de tareas, la ejecución de todas las tareas de interrupción
  • Poner en orden: Todo tarea ha terminado, el número de subprocesos de trabajo a 0, devolución de llamada terminada (), el valor predeterminado terminado () es una implementación vacía, el usuario puede reemplazar este método de monitor de TIDYINGestado de disponibilidad.
  • Terminación: método terminado () se ha realizado.

El uso real de la agrupación de hebras

grupo de subprocesos acabada Aquí nos fijamos en la aplicación práctica de los principios de la escena del grupo de subprocesos.
En el proceso actual solicitud del proyecto, el usuario debe basarse en diferentes escenarios, para que coincida con diferentes parámetros de la piscina hilo, tales como Executorsherramientas para crear 5 proporciona un método piscina subproceso diferente:

  • newFixThreadPool: se caracteriza por un número fijo de hilos de rosca, cola sin límites. Se aplica a número impar de tareas, no es sensible a la presión de memoria, una carga única de detección escenario sistema.
  • Caché: características de capacidad libre de la cola, no limita el número máximo de subprocesos. Para aplicaciones que requieren baja latencia, escenarios de las misiones cortas.
  • SingleThread: se caracteriza por un único subproceso de colas, sin límites. Para la ejecución asíncrona, garantizar el orden de las escenas.
  • Programado: se caracteriza por el uso DelayedWorkQueue cuando la cola de tareas recurrentes escena tareas
    Aquí analizamos cómo utilizar la piscina hilo conector Tomcatjava public void createExecutor() {
    internalExecutor = true;
    TaskQueue taskqueue = new TaskQueue();
    TaskThreadFactory tf = new TaskThreadFactory(getName() + "-exec-", daemon, getThreadPriority());
    executor = new ThreadPoolExecutor(getMinSpareThreads(), getMaxThreads(), 60, TimeUnit.SECONDS,taskqueue, tf);
    taskqueue.setParent( (ThreadPoolExecutor) executor);
    }
  • El número mínimo de hilos (predeterminado): 10
  • El número máximo de hilos (predeterminado): 200
  • La cola de tareas: TaskQueue, TaskQueue heredados de LinkedBlockingQueue, pero volvió a escribir offer()y poll()otros métodos. Es de destacar que una reescritura offer()método, siempre que el trabajo no alcanza no ha alcanzado el número de hilos maxSize, no puede ser insertado con éxito, el resultado de esto es que después de la presentación en el grupo de subprocesos será inmediatamente subprocesos de trabajo que todas las solicitudes. Hasta que el número máximo de subprocesos de trabajo. Si alcanza el número máximo de subprocesos de trabajo, la tarea se añadirá a la cola de tareas.

característica de la agrupación de conexiones

Cuando usamos JDBC para acceder a la base de datos, crear una conexión JDBC que pasar para establecer una conexión (incluyendo TCP de tres vías) una serie de procesos, autenticación, autorización, asignación de recursos y la inicialización. Normalmente se tarda 100 ms o más. operaciones CRUD son típicamente mucho tiempo generalmente de 10 ~ 50 ms. Si crea un tiempo de conexión de consumo frecuente es muy grande, por lo que nuestro programa está optimizado para administrar la conexión, siempre que una conexión no se ha completado su destrucción, sino para mantenerlos asignados al siguiente trabajador reutilizado.
Proporcionar grupo de conexión externa:

  • conectarse
  • conexión liberable
    definido los parámetros de configuración:
  • número máximo de conexiones
  • El número inicial de conexiones
  • El número mínimo de conexiones inactivas
    internos:
  • Keep-alive conexión
  • reciclaje gratuito
  • verificación de disponibilidad

Funciona agrupación de conexiones

Druida principalmente por la matriz, las señales ReentrantLock y dos cantidades vacías y la composición notEmpty.
Una matriz está conectado a un recipiente de almacenamiento, cada vez que un hilo cliente solicita una conexión, tome la última posición de la matriz, crear una conexión, la responsabilidad de crear una conexión dedicada hilo, la conexión es responsable de la destrucción de la destrucción por una conexión de hilo dedicado.
subproceso de cliente, un hilo para crear una conexión, bajo llave y roscas que destruyen a través de dos juntas de trabajo para coordinar la condición de trabajo.

piscina conexión real

parámetros de agrupación de conexiones proporcionadas como el caso lo requiera, debido a los diferentes códigos de tráfico, desplegados en diferentes configuraciones de la máquina, los parámetros necesarios no son los mismos. Por lo que las necesidades reales de los parámetros de configuración de servicio de prueba de presión, el ajuste de observación.
El papel principal de la agrupación de conexiones es la multiplexación de conexión, si el valor es demasiado pequeño, no es suficiente, puede causar obstrucción de la labor de la rosca, despliegue el rendimiento. Si el valor es demasiado alto, el cliente y el servidor pueden causar excesivos costes de mantenimiento.

Cómo ajuste maxSize:
necesitamos que el sistema se implementa en un solo nodo, y después se somete a prueba de presión, prueba de la carga máxima del sistema es. Mediante la medición de la presión, mejorar continuamente el número de clientes simultáneos. Tales como el número inicial de clientes simultáneos 10, 20, 30 se incrementa de forma secuencial y similares, a menos de que lleguen a un cuello de botella, TPS presión medida aumentará el número de clientes simultáneos se incrementa, el tiempo de respuesta ya que los clientes generalmente terminar número de aumentos simultáneos, pero la tasa de aumento no es obvia. Cuando el número de cliente simultáneas alcanza un cierto umbral, el TPS ya no es cada vez mayor, pero se negó, el tiempo de respuesta del salto de allí, esta vez es el sistema para un máximo rendimiento. M cuando se puede obtener el número de conexiones activas cuando (no debe ser alcanzado maxSize avance conjunto en un valor grande) esta cuellos de botella del sistema.
Con el fin de conectar fuera de la piscina de tamaño suficiente, hemos duplicado el periodo de margen de distribución, por lo que maxSize = n * 2.
Además, la agrupación de conexiones n como el umbral de alarma, la configuración de alarma.

Cómo establecer INITIALSIZE:
agrupación de conexiones tamaño inicial, por lo general se establece en un valor menor. Sin embargo, si un gran tráfico en línea, servicios en línea, la conexión no es suficiente, poco tiempo va a crear un gran número de subprocesos en espera para las conexiones creadas problemas, como el caso puede ser initalSize establece un poco más grande.
Si ya está ejecutando el servicio en línea, se puede establecer el número de hilos activos para la producción de pico plano.

Cómo minidle ajustes:
Ajuste el número de conexiones activas en la red en horas bajas de flujo pico

Supongo que te gusta

Origin www.cnblogs.com/xuerge/p/xian-cheng-chi-yu-lian-jie-chi.html
Recomendado
Clasificación