Mi aplicación java registra una buena cantidad de información a un archivo de registro en el disco. Parte de esta información registrada es más importante que el resto; excepto que en raras ocasiones se necesita la información menos importante explicar a los usuarios finales por qué el código en la producción tomó una decisión determinada.
Me preguntaba si va a ser una buena idea para registrar la información menos importante para una toma en lugar del archivo en el disco. Es zócalo de escritura significativamente más rápido que el disco de escritura?
Actualización: Básicamente, quería conectarse a una toma de corriente en la misma subred o incluso la misma máquina, suponiendo que sería más rápido que escribir en el disco. Otro proceso (no es parte de mi solicitud) quedaría redactado de esa toma a su conveniencia. Estaba pensando que esto sería logstash tirando de un enchufe. Asíncrono de registro en el disco utilizando otro hilo es otra alternativa pero quería tener en cuenta la opción de conector primero si esa es una solución fácil con un rendimiento mínimo de pulsaciones.
Usted tiene pocas opciones:
- almacenamiento local es generalmente más rápido que la red
- usted podría utilizar asíncrono registro en el disco , por lo que sus fuegos de proceso y se olvida (que es rápido!)
- logstash puede leer de Unix sockets de dominio , si se encuentra en * nix ; estos son por lo general más rápido que el de E / S
Si está escribiendo a algún lugar rápidamente y desde allí se reenvía de forma más lenta (tala logstash través de la red a alguna instancia elástico), donde está ocurriendo el búfer? Tal configuración generará creciente acumulación de mensajes aún no se ha enviado si el registro pasa a alta velocidad durante un periodo prolongado de tiempo.
En los escenarios anteriores sucederá buffering (respectivamente):
- sincronización directo de escritura en disco : registro de final de archivo en el disco es el buffer
- async marco de registro : tampones podrían comer en su montón o memoria de proceso (cuando fuera del montón, o en algún área del núcleo, por lo tanto, en RAM )
- sockets de dominio Unix : a almacenar en el espacio del núcleo, por lo que la RAM de nuevo
En los últimos 2 opciones cosas se pondrán cada vez más chirriante en el escenario de alto volumen constante.
Prueba y perfil ... o simplemente iniciar sesión en el disco local y rotar los archivos, borrar las antiguas.