Las pruebas de rendimiento y de carga son procesos importantes para asegurarte de que estás preparado para la producción. Para probar clusters de Couchbase Server, existe una utilidad de línea de comandos de código abierto llamada "cbc-pillowfight". Forma parte de libcouchbase.
Antes de empezar
Necesitarás un clúster de Couchbase Server en funcionamiento. Puedes probarlo directamente en tu máquina local (descargar Couchbase para Linux, Windows y Mac) o en un Contenedor Docker.
Si sólo estás probando pillowfight, puede que quieras crear un bucket en tu cluster sólo para ese propósito. Yo he creado un bucket llamado "pillow".
Después de tener instalado Couchbase Server, necesitarás descargar e instalar libcouchbase:
- Mac:
brew install libcouchbase
- Ventanas: descargar un archivo zip (la última en el momento de escribir este artículo es libcouchbase-2.8.1)
Para más información, incluidas las instrucciones para Linux, consulte la página Notas de la versión de libcouchbase.
Lucha de almohadas para las pruebas de rendimiento
Si utilizaste homebrew para instalar en un Mac, puedes escribir cbc-pillowfight --ayuda
directamente para la pantalla de ayuda de la línea de comandos.
En Windows, descomprime el archivo zip libcouchbase donde quieras. Encontrará cbc-pillowfight.exe
en el papelera
carpeta.
La pelea de almohadas más simple que puedes hacer es:
.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u Administrador -P contraseña
Esto es para una línea de comandos Powershell de Windows, pero será muy similar en otros sistemas operativos.
Se iniciará una lucha de almohadas para el clúster que se ejecuta en su máquina local (localhost), con el usuario "Administrador" que tiene una contraseña de "contraseña" (su nombre de usuario y contraseña pueden ser diferentes).
Deberías ver un mensaje como "Thread 0 has finished populating".
¿Qué es una pelea de almohadas?
En este punto, el pillowfight va a empezar a crear, actualizar y leer documentos del cubo "pillow". Va a hacer todas estas operaciones ("ops") de acuerdo con la configuración de línea de comandos que especifique (o volver a los valores predeterminados).
Por ejemplo, con el -I
puede especificar el número total de documentos sobre los que desea operar. El valor por defecto es 1000. Por lo tanto, si ejecutas el comando anterior, pronto verás que aparecen 1000 documentos en el cubo de la almohada.
No se limita a crear 1000 documentos y salir. Pillowfight seguirá "obteniendo" y "actualizando" esos documentos hasta que termines el proceso. Se llama "pillowfight" porque pondrá tu Couchbase Cluster en batalla (con esfuerzo real), pero en realidad es más una simulación de batalla.
Mientras tiene lugar la lucha, puede supervisar las estadísticas de los cubos para ver el rendimiento de su clúster bajo carga.
Mientras escribo esto, el ventilador de mi portátil está zumbando mientras pruebo el clúster Couchbase de un solo nodo que he instalado en él. (Sospecho que el escritorio de mi casa crearía un conjunto mucho más impresionante de gráficos, pero Estoy viajando mucho este mes).
Hay muchas estadísticas disponibles que puedes consultar a nivel de cubo. Consulte la Documentación de Couchbase Server sobre Estadísticas de monitorización para más detalles.
Opciones para las pruebas de rendimiento
Los ajustes por defecto de pillowfight pueden no ser óptimos para el tipo de aplicación que vas a utilizar con Couchbase. Hay muchas formas de ajustar tu lucha de almohadas para que se adapte mejor a tus casos de uso. Para ver la lista completa de opciones, escribe cbc-pillowfight --ayuda
en la línea de comandos.
Pero he aquí algunas opciones notables que quizá quiera probar:
-I
o--num-items
con un número, para especificar sobre cuántos documentos desea operar.--json
para utilizar cargas JSON en los documentos. Por defecto, los documentos se crean con cargas útiles no JSONpero es posible que desee disponer de documentos JSON reales para probar otros aspectos del rendimiento mientras se ejecuta la lucha de almohadas.-e
para que los documentos expiren después de un cierto periodo de tiempo. Si estás usando Couchbase como caché o almacenamiento a corto plazo, querrás usar esta configuración para monitorizar el efecto de los documentos que caducan.--subdoc
para utilizar la API de subdocumentos. No todas las operaciones tendrán que realizarse en un documento entero.-M
o--max-size
para fijar un límite al tamaño de los documentos. Es posible que desee ajustar esto para adaptar un tamaño de documento más realista para su sistema. Hay un-m
y--min-size
también.
He aquí otro ejemplo utilizando las opciones anteriores:
.\cbc-pillowfight.exe -U couchbase://localhost/pillow -u Administrador -P contraseña -I 10000 --json -e 10 --subdoc -M 1024
Esto iniciará una pelea de almohadas usando 10000 documentos JSON, que expiran después de 10 segundos, usa la API de sub-documento, y tiene un tamaño máximo de documento de 1024 bytes.
Nota: existe un -t --num-threads
opción. Actualmente, si utiliza Windows (como yo), está limitado a un único subproceso (véase este código).
Resumen
Couchbase está comprometido con el rendimiento. Realizamos pruebas de rendimiento exhaustivas para asegurarnos de que ofrecemos la velocidad que usted espera. Echa un vistazo a las publicaciones recientes en nuestro blog Motor de almacenamiento de plasma y Mejoras en N1QL. Pero nadie conoce su caso de uso y su infraestructura mejor que usted. Con pillowfight, dispones de una herramienta que te ayuda a realizar pruebas de rendimiento, pruebas de carga y pruebas de estrés.
Gracias a Sergey Avseyev por ayudar con esta entrada del blog, y su contribuciones a libcouchbase.
Si tiene alguna pregunta sobre Couchbase, deje un comentario a continuación o póngase en contacto conmigo en Twitter @mgroves.
No consigo que esto funcione. Estoy tratando el comando básico en un símbolo del sistema de Windows (administrador):
cbc-pillowfight.exe -U couchbase://ar-sql-01 -u Cierto_Usuario -p Cierta_Contraseña
La respuesta es:
No se ha podido conectar: Ha fallado la autenticación. Es posible que haya introducido una combinación de nombre de usuario y contraseña no válida.
Sin embargo, en mi proyecto de visual studio, usando "couchbase://ar-sql-01" como la primera y única entrada para servidores, y, y Some_User/Some_Password para UserName y Password respectivamente, mi conexión (y todas las funciones) funcionan bien, así que sé que el nombre de usuario y la contraseña son correctos. ¿Alguna idea?
NM. Estaba usando -p para contraseña, en lugar de -P (nótese la diferencia entre mayúsculas y minúsculas). Además, tuve que añadir / a la cadena de conexión. ¿Quizás esto ayude a alguien más?