Benchmark des performances de requête LindormTSDB sur quatre tailles de cluster. Tous les tests ont été exécutés dans un environnement isolé, sans opérations d'écriture concurrentes : les résultats représentent le débit maximal en lecture seule. Les performances des requêtes diminuent lorsque le volume de données de séries temporelles est important, que les opérations de lecture et d'écriture s'exécutent simultanément ou que les requêtes analysent un grand nombre de séries temporelles et de points de données. Comparez ces résultats à votre propre charge de travail métier avant de dimensionner votre infrastructure.
Jeu de données de test
| Propriété | Valeur |
|---|---|
| Appareils | 100 |
| Métriques par appareil | 101 valeurs de mesure |
| Intervalle de rapport | 10 secondes |
| Durée des données | 1 jour par appareil |
Types de requêtes
Six modèles de requêtes sont testés. Toutes les requêtes ciblent la métrique cpu.usage_user.
| Type de requête | Ce qu'elle mesure | SQL |
|---|---|---|
1-host-1-hr-raw |
Toutes les valeurs brutes d'un appareil sur 1 heure | select time, usage_user from cpu where (hostname = 'host_17') and time >=1514837782646 and time < 1514841382646 ; |
1-host-1-hr |
Valeur maximale par minute d'un appareil sur 1 heure | select time, max(usage_user) as max_usage_user from cpu where (hostname = 'host_17') and time >=1514837782646 and time < 1514841382646 sample by 1m |
1-host-12-hr-raw |
Toutes les valeurs brutes d'un appareil sur 12 heures | select time, usage_user from cpu where (hostname = 'host_0') and time >=1514787382646 and time < 1514830582646; |
1-host-12-hr |
Valeur maximale par minute d'un appareil sur 12 heures | select time, max(usage_user) as max_usage_user from cpu where (hostname = 'host_0') and time >=1514787382646 and time < 1514830582646 sample by 1m ; |
1-host-latest |
Dernière valeur d'un appareil | select time, latest(usage_user) as latest_usage_user from cpu where (hostname = 'host_50') sample by 0 |
8-host-latest |
Dernières valeurs de 8 appareils | select time, latest(usage_user) as latest_usage_user from cpu where (hostname = 'host_64' or hostname = 'host_80' or hostname = 'host_21' or hostname = 'host_5' or hostname = 'host_79' or hostname = 'host_47' or hostname = 'host_25' or hostname = 'host_18') sample by 0 |
Métriques de performance
| Métrique | Description |
|---|---|
queryType |
Type de requête, tel que décrit dans le tableau ci-dessus |
worker |
Nombre de requêtes concurrentes |
qps |
Requêtes SQL par seconde |
max_cpu |
Utilisation maximale du CPU (%) |
max_mem |
Utilisation maximale de la mémoire (%) |
Résultats des tests
Chaque tableau de résultats ci-dessous a été mesuré avec uniquement la charge de travail de test s'exécutant sur LindormTSDB. Aucune autre charge de travail n'est active pendant le test.
Cluster 1 — 3 nœuds, 4 cœurs, 16 Go de mémoire
Le QPS augmente correctement de 16 à 50 workers, puis se stabilise. Les requêtes sur une fenêtre courte (1-host-1-hr) atteignent jusqu'à 1 887 QPS. Les requêtes de dernière valeur multi-appareils (8-host-latest) sont limitées par le CPU, atteignant 97 % d'utilisation du CPU à tous les niveaux de concurrence.
| queryType | worker | qps | max_cpu | max_mem |
|---|---|---|---|---|
| 1-host-1-hr | 16 | 1,420.96 | 86.95 | 48.08 |
| 1-host-1-hr | 50 | 1,865.50 | 83.45 | 49.32 |
| 1-host-1-hr | 100 | 1,887.00 | 81.71 | 48.95 |
| 1-host-1-hr | 200 | 1,846.00 | 82.99 | 48.87 |
| 1-host-1-hr-raw | 16 | 1,324.80 | 79.54 | 50.34 |
| 1-host-1-hr-raw | 50 | 1,722.00 | 86.42 | 50.96 |
| 1-host-1-hr-raw | 100 | 1,737.00 | 86.36 | 50.92 |
| 1-host-1-hr-raw | 200 | 1,752.00 | 87.09 | 50.88 |
| 1-host-12-hr | 16 | 497.44 | 86.77 | 48.81 |
| 1-host-12-hr | 50 | 555.00 | 95.05 | 48.81 |
| 1-host-12-hr | 100 | 571.00 | 94.97 | 48.90 |
| 1-host-12-hr | 200 | 584.00 | 94.77 | 49.11 |
| 1-host-12-hr-raw | 16 | 286.56 | 82.20 | 51.04 |
| 1-host-12-hr-raw | 50 | 328.00 | 95.34 | 51.14 |
| 1-host-12-hr-raw | 100 | 330.00 | 96.51 | 51.21 |
| 1-host-12-hr-raw | 200 | 334.00 | 96.70 | 51.56 |
| 1-host-latest | 16 | 1,025.12 | 81.79 | 49.34 |
| 1-host-latest | 50 | 1,146.00 | 93.36 | 49.42 |
| 1-host-latest | 100 | 1,144.00 | 92.41 | 49.36 |
| 1-host-latest | 200 | 1,164.00 | 92.89 | 49.44 |
| 8-host-latest | 16 | 175.20 | 96.65 | 49.64 |
| 8-host-latest | 50 | 180.00 | 97.01 | 49.95 |
| 8-host-latest | 100 | 181.00 | 96.59 | 50.05 |
| 8-host-latest | 200 | 182.00 | 96.73 | 50.15 |
Cluster 2 — 3 nœuds, 8 cœurs, 32 Go de mémoire
Le doublement des cœurs et de la mémoire double approximativement le QPS pour la plupart des types de requêtes. La requête 1-host-1-hr atteint 3 584 QPS avec 200 workers ; 8-host-latest atteint 472 QPS. L'utilisation de la mémoire baisse considérablement par rapport au Cluster 1, ce qui reflète la marge mémoire plus importante.
| queryType | worker | qps | max_cpu | max_mem |
|---|---|---|---|---|
| 1-host-1-hr | 16 | 2,426.56 | 79.45 | 31.83 |
| 1-host-1-hr | 50 | 3,363.50 | 71.58 | 33.50 |
| 1-host-1-hr | 100 | 3,530.00 | 73.80 | 35.44 |
| 1-host-1-hr | 200 | 3,584.00 | 70.12 | 35.43 |
| 1-host-1-hr-raw | 16 | 2,181.92 | 52.67 | 36.10 |
| 1-host-1-hr-raw | 50 | 3,231.50 | 69.77 | 36.20 |
| 1-host-1-hr-raw | 100 | 3,371.00 | 72.88 | 36.19 |
| 1-host-1-hr-raw | 200 | 3,348.00 | 69.80 | 35.08 |
| 1-host-12-hr | 16 | 877.44 | 59.57 | 35.66 |
| 1-host-12-hr | 50 | 1,132.50 | 82.37 | 35.51 |
| 1-host-12-hr | 100 | 1,145.00 | 84.10 | 35.55 |
| 1-host-12-hr | 200 | 1,152.00 | 84.69 | 35.62 |
| 1-host-12-hr-raw | 16 | 445.44 | 58.55 | 35.29 |
| 1-host-12-hr-raw | 50 | 641.00 | 84.98 | 35.31 |
| 1-host-12-hr-raw | 100 | 668.00 | 90.79 | 35.35 |
| 1-host-12-hr-raw | 200 | 670.00 | 91.98 | 35.42 |
| 1-host-latest | 16 | 1,785.44 | 51.20 | 35.80 |
| 1-host-latest | 50 | 2,273.50 | 64.86 | 35.92 |
| 1-host-latest | 100 | 2,280.00 | 64.97 | 35.82 |
| 1-host-latest | 200 | 2,284.00 | 65.01 | 35.85 |
| 8-host-latest | 16 | 439.04 | 85.04 | 35.98 |
| 8-host-latest | 50 | 471.50 | 91.71 | 36.00 |
| 8-host-latest | 100 | 472.00 | 92.42 | 36.08 |
| 8-host-latest | 200 | 470.00 | 93.10 | 36.09 |
Cluster 3 — 3 nœuds, 16 cœurs, 64 Go de mémoire
Le QPS augmente considérablement avec davantage de cœurs. La requête 1-host-1-hr atteint 8 902 QPS avec 200 workers. L'utilisation de la mémoire reste inférieure à 28 %, indiquant que le jeu de données tient confortablement en mémoire. Une concurrence plus élevée continue d'améliorer le débit pour la plupart des types de requêtes.
| queryType | worker | qps | max_cpu | max_mem |
|---|---|---|---|---|
| 1-host-1-hr | 16 | 3,287.84 | 49.77 | 25.83 |
| 1-host-1-hr | 50 | 6,543.50 | 56.06 | 26.45 |
| 1-host-1-hr | 100 | 7,713.00 | 59.81 | 26.48 |
| 1-host-1-hr | 200 | 8,902.00 | 75.23 | 26.47 |
| 1-host-1-hr-raw | 16 | 2,857.60 | 32.42 | 26.89 |
| 1-host-1-hr-raw | 50 | 5,173.00 | 50.44 | 26.96 |
| 1-host-1-hr-raw | 100 | 6,177.00 | 56.88 | 26.95 |
| 1-host-1-hr-raw | 200 | 6,530.00 | 59.20 | 26.98 |
| 1-host-12-hr | 16 | 1,148.48 | 38.69 | 26.52 |
| 1-host-12-hr | 50 | 1,920.50 | 71.18 | 26.57 |
| 1-host-12-hr | 100 | 2,181.00 | 82.79 | 26.62 |
| 1-host-12-hr | 200 | 2,398.00 | 91.44 | 26.64 |
| 1-host-12-hr-raw | 16 | 539.20 | 33.78 | 27.04 |
| 1-host-12-hr-raw | 50 | 704.50 | 46.87 | 27.12 |
| 1-host-12-hr-raw | 100 | 612.00 | 41.76 | 27.17 |
| 1-host-12-hr-raw | 200 | 694.00 | 46.89 | 27.24 |
| 1-host-latest | 16 | 2,141.60 | 40.24 | 26.69 |
| 1-host-latest | 50 | 3,602.00 | 77.84 | 26.69 |
| 1-host-latest | 100 | 4,098.00 | 91.87 | 26.72 |
| 1-host-latest | 200 | 4,356.00 | 94.94 | 26.71 |
| 8-host-latest | 16 | 541.28 | 81.87 | 26.77 |
| 8-host-latest | 50 | 599.50 | 97.52 | 26.77 |
| 8-host-latest | 100 | 648.00 | 97.85 | 26.88 |
| 8-host-latest | 200 | 832.00 | 97.40 | 26.94 |
Cluster 4 — 3 nœuds, 32 cœurs, 128 Go de mémoire
Le plus grand cluster offre le débit le plus élevé. La requête 1-host-1-hr atteint 15 072 QPS avec 200 workers, soit environ 8 fois le débit du Cluster 1 à la même concurrence. La requête 1-host-latest atteint 9 634 QPS. L'utilisation du CPU reste faible pour les requêtes mono-hôte, laissant de la marge pour des charges de travail mixtes.
| queryType | worker | qps | max_cpu | max_mem |
|---|---|---|---|---|
| 1-host-1-hr | 16 | 3,543.04 | 24.25 | 28.33 |
| 1-host-1-hr | 50 | 9,351.00 | 34.14 | 28.89 |
| 1-host-1-hr | 100 | 12,567.00 | 46.42 | 28.92 |
| 1-host-1-hr | 200 | 15,072.00 | 57.27 | 28.94 |
| 1-host-1-hr-raw | 16 | 2,811.20 | 15.41 | 29.11 |
| 1-host-1-hr-raw | 50 | 6,086.50 | 27.85 | 29.13 |
| 1-host-1-hr-raw | 100 | 7,881.00 | 36.44 | 29.14 |
| 1-host-1-hr-raw | 200 | 8,762.00 | 40.97 | 29.17 |
| 1-host-12-hr | 16 | 1,394.24 | 18.85 | 28.91 |
| 1-host-12-hr | 50 | 3,317.50 | 49.89 | 28.96 |
| 1-host-12-hr | 100 | 4,160.00 | 67.13 | 28.96 |
| 1-host-12-hr | 200 | 4,808.00 | 79.02 | 28.96 |
| 1-host-12-hr-raw | 16 | 542.56 | 17.31 | 29.22 |
| 1-host-12-hr-raw | 50 | 826.50 | 24.96 | 29.24 |
| 1-host-12-hr-raw | 100 | 669.00 | 23.55 | 29.28 |
| 1-host-12-hr-raw | 200 | 772.00 | 24.86 | 29.32 |
| 1-host-latest | 16 | 2,600.00 | 16.04 | 28.97 |
| 1-host-latest | 50 | 6,590.00 | 46.11 | 28.98 |
| 1-host-latest | 100 | 8,516.00 | 65.60 | 28.99 |
| 1-host-latest | 200 | 9,634.00 | 75.93 | 28.98 |
| 8-host-latest | 16 | 949.12 | 55.91 | 29.03 |
| 8-host-latest | 50 | 1,525.50 | 83.49 | 29.04 |
| 8-host-latest | 100 | 1,710.00 | 93.16 | 29.06 |
| 8-host-latest | 200 | 1,758.00 | 95.54 | 29.09 |
Résumé des performances
QPS maximal (tous niveaux de concurrence confondus) pour chaque cluster et type de requête. Des nombres de workers plus élevés n'améliorent pas toujours le QPS : les résultats se stabilisent ou varient en fonction de la saturation du CPU.
| Type de requête | Cluster 1 (4c/16G) | Cluster 2 (8c/32G) | Cluster 3 (16c/64G) | Cluster 4 (32c/128G) |
|---|---|---|---|---|
| 1-host-1-hr | 1,887 | 3,584 | 8,902 | 15,072 |
| 1-host-1-hr-raw | 1,752 | 3,371 | 6,530 | 8,762 |
| 1-host-12-hr | 584 | 1,152 | 2,398 | 4,808 |
| 1-host-12-hr-raw | 334 | 670 | 704.50 | 826.50 |
| 1-host-latest | 1,164 | 2,284 | 4,356 | 9,634 |
| 8-host-latest | 182 | 472 | 832 | 1,758 |