
He estado desarrollando con Cassandra localmente durante un tiempo y los tiempos de respuesta a las consultas rondan los 50 ms.
Configuré un clúster EC2 de 5 nodos desde la ami de la comunidad cassandra, todo salió bien, opscenter está en funcionamiento y no hay problemas.
Cuando realizo cualquier consulta desde una máquina fuera de la red de AWS, ya sea para crear un espacio de claves o hacer un select * en una tabla vacía, el tiempo de respuesta es de más de 20 segundos.
Cuando consulto desde una máquina en la misma región, el tiempo de respuesta es de entre 1 y 2 segundos, todavía muy lento.
Todas las máquinas EC2 son m1.large eu-west-1a
¿Tiene alguna idea de por qué sucedería esto o dónde debería buscar para encontrar el problema?
Respuesta1
La versión actual de DevCenter fue diseñada para admitir como escenario principal la ejecución de scripts CQL (más bien largos) (frente a una consola interactiva con consultas ejecutadas una tras otra). DevCenter utiliza como conector subyacente el controlador Java DataStax para Cassandra.
Para el escenario mencionado anteriormente, para garantizar que no haya "conflictos", se crea una nueva sesión para cada ejecución. Cuando se inicializa una sesión, el controlador realiza un descubrimiento automático de nodos, crea grupos de conexiones, etc. Básicamente, realiza una gran cantidad de trabajo de preparación. Dependiendo de la latencia de su máquina cliente a los nodos EC2, el tamaño del clúster y también la configuración de estos nodos (consulte los requisitos de conexión), esta fase de inicialización puede resultar bastante costosa.
Como puede imaginar, el tiempo dedicado a la preparación no representaría un gran porcentaje de la ejecución de un script DDL y un tamaño decente de inserciones/actualizaciones. Pero para un escenario interactivo, resultará en un comportamiento subóptimo (el que estás describiendo)
Las próximas versiones de DevCenter abordarán el escenario interactivo y lo optimizarán para que la experiencia del usuario sea la esperada. Y apoyar este escenario ocupa un lugar bastante alto en nuestra lista de prioridades.