opentsdb optimiza la velocidad de lectura y resuelve OOM y StackOverflowError
Recientemente, encontré el problema de la baja velocidad de consulta de openstdb en mi proyecto. Independientemente de si los datos son pequeños o grandes, la consulta siempre es muy lenta y se producirá OOM cuando la cantidad de datos devueltos por la consulta sea demasiado grande.
opentsdb está basado en Hbase. Finalmente, se encontró una solución para aumentar el BucketCache de Hbase.
¿Cuál es el principio? De hecho, es para aumentar el caché al realizar consultas. Los datos de HBase se almacenan en bloques, el valor predeterminado es 64K. HBase proporciona dos implementaciones de BlockCache: LruBlockCache en el montón y BucketCache (generalmente fuera del montón) de forma predeterminada. Generalmente, el rendimiento de BucketCache es peor que el de LruBlockCache. Sin embargo, debido a la influencia de GC, el retraso de LruBlockCache se volverá inestable. Sin embargo, dado que BucketCache administra BlockCache por sí solo y no requiere GC, su retraso suele ser relativamente. estable, lo cual a veces es necesario. Razones para elegir BucketCache. Para obtener más detalles, consulte esas cosas sobre HBase.
Después de aprender esto, todavía tengo algunas preguntas: ¿qué son dentro y fuera del montón? Puede consultar la memoria fuera del montón (memoria fuera del montón) y la memoria en el montón (memoria en el montón) en JVM
En cuanto a cómo realizar modificaciones y una explicación más detallada, puede consultar. a la documentación oficial de hbase.
Hay un problema relacionado en github, que surgió en 2014 y aún está abierto. La forma en que los expertos lo resolvieron es modificando el tamaño de la pila JVM, lo que de hecho puede resolver el problema. El proceso de operación es el siguiente:
Este error también es repugnante. No encontré una buena solución. Vi un artículo que lo resolvió modificando el código fuente de openstdb. El enfoque actual es agregar todos los datos y almacenarlos con mayor granularidad de tiempo para reducir la cantidad de datos devueltos al realizar consultas. Si alguien puede resolver este problema, deje un mensaje o envíe un mensaje privado. /p >
Recientemente leí la documentación oficial y encontré un método de procesamiento adecuado para mi proyecto, que resuelve perfectamente todos los problemas anteriores. Si sus datos se pueden dividir en varias métricas, puede probar este método para combinar los datos. cada métrica, la base se vuelve más pequeña y, debido a que Hbase se recupera en Rowkey, la velocidad será más rápida.