Basé sur la puissance de traitement du processeur pour exécuter le serveur d'applications Il semble qu'il soit bon de définir un nombre approprié de processus / threads, J'ai pensé que ce serait bien si je pouvais trouver un guide simple pour le réglage réel, alors je l'ai mesuré.
Pour la configuration du serveur, préparez les conteneurs suivants avec Docker. (Le nombre de cœurs de processeur dans chaque serveur est de 1) --Nginx (serveur Web) --uwsgi (serveur d'applications) --MySQL (serveur de base de données) Au moment de la mesure, démarrez l'application Python liée au serveur DB avec uwsgi C'est un flux pour accéder à uwsgi via le proxy de Nginx du serveur frontal.
Outils utilisés pour la confirmation des mesures --Locust (outil de test de charge) Commande --vmstat (vérifier l'état de charge du système)
Cette confirmation de mesure est centrée sur la capacité de traitement du serveur d'application Dans le modèle suivant, j'ai changé le nombre de processus / threads dans le paramètre uwsgi et je l'ai mesuré. --Processus: 1, filetage: 1
Faire des demandes simultanées avec 15 clients jusqu'à un total de 300 demandes Considérez l'état de traitement de la demande et l'état de charge du système toutes les 3 secondes à ce moment-là comme résultats de mesure. Vérifiez l'état du traitement de la demande à partir du résultat de Locust Vérifiez l'état de charge du système avec la commande vmstat pour uwsgi (serveur d'applications).
Locust
article | La description |
---|---|
reqs | Nombre actuel de demandes |
Avg | Temps de traitement moyen pour 1 demande(ms) |
Min | Temps de traitement minimum pour 1 demande(ms) |
Max | Temps de traitement maximum pour 1 demande(ms) |
Median | Temps de traitement médian pour une demande |
req/s | Combien de demandes peuvent être traitées par seconde |
vmstat
[procs]
article | La description |
---|---|
r | Nombre de processus en attente d'exécution(Moyenne routière) |
b | Nombre de processus de sommeil ininterrompus |
[system]
article | La description |
---|---|
in | Nombre d'interruptions par seconde |
cs | Nombre de changements de contexte par seconde |
[cpu]
article | La description |
---|---|
us | Temps utilisateur utilisé pour l'exécution(Côté utilisateur) |
sy | Heure système utilisée pour exécuter le code du noyau(Côté noyau) |
id | Taux d'inactivité du processeur |
wa | Utilisation du processeur en attente d'E / S |
La charge moyenne est faible, le temps de traitement d'une requête et les req / s ne sont pas mauvais dans l'ensemble. En fonctionnement réel, il semble que les ressources du processeur puissent être épargnées. Vous pouvez essayer un paramètre de performances légèrement supérieur.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 481572 67852 610612 0 0 23 20 271 526 8 2 90 0 0
0 0 0 481560 67852 610644 0 0 0 0 226 447 9 1 90 0 0
1 0 0 480256 67860 610936 0 0 0 31 1207 2606 81 11 9 0 0
1 0 0 478552 67884 611288 0 0 0 45 1263 2815 89 8 3 0 0
1 0 0 477824 67908 611696 0 0 0 49 1302 2915 84 13 3 0 0
2 0 0 477420 67924 612060 0 0 0 24 1351 2995 86 11 3 0 0
1 0 0 477080 67932 612440 0 0 0 9 1333 2942 85 13 3 0 0
1 0 0 476280 67964 612720 0 0 0 40 1269 2803 87 10 3 0 0
1 0 0 476124 67996 613084 0 0 0 44 1361 2989 83 13 3 0 0
1 0 0 475596 68012 613512 0 0 0 27 1358 2996 85 12 3 0 0
1 0 0 473144 68020 613888 0 0 0 12 1327 2934 83 14 3 0 0
2 0 0 472648 68044 614192 0 0 0 39 1322 2958 86 11 3 0 0
1 0 0 471964 68068 614596 0 0 0 1263 1299 2874 86 11 3 0 0
1 0 0 471656 68084 614956 0 0 0 24 1349 2973 83 14 4 0 0
1 0 0 471116 68092 615280 0 0 0 79 1351 2992 85 11 3 0 0
1 0 0 470464 68116 615716 0 0 0 61 1356 3008 88 9 3 0 0
0 0 0 470464 68116 615804 0 0 0 0 473 1026 25 3 72 0 0
0 0 0 470480 68124 615804 0 0 0 7 108 194 0 0 100 0 0
0 0 0 470604 68124 615804 0 0 0 0 102 192 0 0 100 0 0
Name # reqs # fails Avg Min Max | Median req/s
-----------------------------------------------------------------------------------------------------------
GET /admin/ 22 0(0.00%) 982 714 1111 | 1000 6.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 69 0(0.00%) 950 714 1111 | 970 7.43
-----------------------------------------------------------------------------------------------------------
GET /admin/ 115 0(0.00%) 944 714 1111 | 930 7.80
-----------------------------------------------------------------------------------------------------------
GET /admin/ 162 0(0.00%) 937 714 1111 | 920 7.70
-----------------------------------------------------------------------------------------------------------
GET /admin/ 210 0(0.00%) 925 714 1111 | 920 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 256 0(0.00%) 925 714 1111 | 920 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 289 0(0.00%) 920 714 1111 | 910 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 0(0.00%) 918 714 1111 | 910 7.80
-----------------------------------------------------------------------------------------------------------
1 délai de traitement de la demande selon le taux de réalisation de la demande
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 910 930 960 980 1000 1000 1100 1100 1111
-----------------------------------------------------------------------------------------------------------
Bien que la charge moyenne soit faible, il existe de nombreux cs de 3000 unités et la surcharge est élevée. Le temps de traitement d'une demande s'allonge dans la seconde moitié et les performances se détériorent.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 464032 68324 616496 0 0 22 19 264 512 8 2 90 0 0
0 0 0 464196 68324 616508 0 0 0 0 117 203 0 0 100 0 0
1 0 0 461796 68332 616712 0 0 0 8 967 2085 64 9 27 0 0
1 0 0 461472 68356 617068 0 0 0 31 1353 3020 86 11 3 0 0
1 0 0 461016 68364 617492 0 0 0 9 1373 3081 87 9 3 0 0
1 0 0 460632 68388 617856 0 0 0 33 1375 3108 86 11 3 0 0
1 0 0 459980 68412 618228 0 0 0 45 1370 3089 88 9 3 0 0
1 0 0 459608 68436 618536 0 0 0 40 1386 3097 87 10 3 0 0
1 0 0 459112 68436 618960 0 0 0 0 1387 3095 89 8 3 0 0
1 0 0 458796 68460 619228 0 0 0 41 1239 2708 84 13 2 0 0
1 0 0 458320 68476 619608 0 0 0 24 1372 3081 87 10 3 0 0
2 0 0 457944 68484 619964 0 0 0 9 1380 3074 84 13 3 0 0
1 0 0 457348 68508 620384 0 0 0 1301 1362 3048 85 11 3 0 0
1 0 0 456820 68532 620696 0 0 0 41 1379 3093 87 10 3 0 0
1 0 0 456236 68548 621056 0 0 0 24 1362 2987 87 10 3 0 0
1 0 0 455956 68556 621484 0 0 0 9 1381 3109 86 11 4 0 0
0 0 0 455704 68580 621668 0 0 0 33 871 1909 50 5 45 0 0
0 0 0 455704 68580 621668 0 0 0 19 101 186 0 0 100 0 0
0 0 0 455720 68588 621668 0 0 0 7 103 195 0 0 100 0 0
Name # reqs # fails Avg Min Max | Median req/s
-----------------------------------------------------------------------------------------------------------
GET /admin/ 24 0(0.00%) 928 693 1042 | 940 6.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 71 0(0.00%) 902 693 1042 | 910 7.57
-----------------------------------------------------------------------------------------------------------
GET /admin/ 119 0(0.00%) 898 693 1042 | 900 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 164 0(0.00%) 922 693 1210 | 900 7.70
-----------------------------------------------------------------------------------------------------------
GET /admin/ 211 0(0.00%) 921 693 1210 | 910 7.60
-----------------------------------------------------------------------------------------------------------
GET /admin/ 258 0(0.00%) 916 693 1210 | 910 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 290 0(0.00%) 915 693 1210 | 910 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 0(0.00%) 914 693 1210 | 910 7.80
-----------------------------------------------------------------------------------------------------------
1 délai de traitement de la demande selon le taux de réalisation de la demande
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 910 920 930 940 980 1100 1200 1200 1210
-----------------------------------------------------------------------------------------------------------
Bien que la moyenne routière soit toujours d'environ 2, elle peut être maintenue à un certain point sans continuer à monter. La demande / s est élevée car cs est faible et le temps de traitement d'une demande est court. La performance est la meilleure dans cette vérification.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 457296 66832 598732 0 0 25 19 268 520 8 2 90 0 0
0 0 0 457424 66832 598744 0 0 0 49 130 244 0 0 100 0 0
2 0 0 449928 66840 598956 0 0 0 21 1271 2193 64 15 21 0 0
2 0 0 448688 66872 599300 0 0 0 41 1172 2251 88 12 0 0 0
2 0 0 447952 66888 599700 0 0 0 24 1211 2433 86 13 0 0 0
1 0 0 447032 66896 600044 0 0 0 41 1165 2203 86 14 0 0 0
2 0 0 446544 66920 600432 0 0 0 45 1215 2415 84 16 0 0 0
2 0 0 446016 66944 600804 0 0 0 36 1158 2196 87 13 0 0 0
2 0 0 445520 66960 601192 0 0 0 55 1202 2383 87 12 0 0 0
2 0 0 444868 66968 601544 0 0 0 9 1151 2240 87 13 0 0 0
1 0 0 444404 66992 601912 0 0 0 59 1204 2386 87 13 0 0 0
2 0 0 443876 67016 602288 0 0 0 37 1192 2353 86 13 0 0 0
2 0 0 443224 67032 602668 0 0 0 35 1209 2372 82 18 0 0 0
2 0 0 441448 67040 603028 0 0 0 1348 1174 2254 84 16 0 0 0
2 0 0 439688 67064 603404 0 0 0 40 1192 2358 81 19 0 0 0
2 0 0 438664 67088 603792 0 0 0 35 1223 2380 86 13 0 0 0
0 0 0 438580 67088 603900 0 0 0 0 387 740 19 4 77 0 0
0 0 0 438612 67096 603900 0 0 0 55 97 204 0 0 100 0 0
0 0 0 438612 67096 603900 0 0 0 0 101 211 0 0 100 0 0
Name # reqs # fails Avg Min Max | Median req/s
-----------------------------------------------------------------------------------------------------------
GET /admin/ 24 0(0.00%) 912 763 1067 | 880 0.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 71 0(0.00%) 888 718 1125 | 870 6.86
-----------------------------------------------------------------------------------------------------------
GET /admin/ 120 0(0.00%) 875 718 1125 | 860 8.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 168 0(0.00%) 874 718 1125 | 860 8.10
-----------------------------------------------------------------------------------------------------------
GET /admin/ 216 0(0.00%) 872 718 1125 | 860 8.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 264 0(0.00%) 871 698 1125 | 860 8.10
-----------------------------------------------------------------------------------------------------------
GET /admin/ 297 0(0.00%) 870 698 1125 | 860 8.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 0(0.00%) 870 698 1125 | 860 7.90
-----------------------------------------------------------------------------------------------------------
1 délai de traitement de la demande selon le taux de réalisation de la demande(ms)
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 860 910 930 940 980 990 1000 1100 1125
-----------------------------------------------------------------------------------------------------------
Étant donné que le paramètre dépasse la limite des spécifications, la surcharge devient importante. La charge moyenne est également élevée et le temps de traitement par requête s'allonge de plus en plus. La performance est la pire dans cette vérification.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 445772 66372 580060 0 0 26 19 263 506 8 2 90 0 0
0 0 0 445780 66372 580068 0 0 0 0 108 223 0 0 100 0 0
3 0 0 445664 66372 580244 0 0 0 40 620 1348 41 9 50 0 0
2 0 0 444780 66372 580592 0 0 0 0 1130 2288 87 13 0 0 0
4 0 0 444404 66372 580948 0 0 0 32 1084 2242 89 11 0 0 0
4 0 0 443996 66372 581320 0 0 0 33 1110 2263 84 16 0 0 0
3 0 0 443488 66372 581692 0 0 0 9 1122 2334 84 16 0 0 0
4 0 0 443124 66372 582036 0 0 0 28 1068 2174 87 13 0 0 0
5 0 0 442768 66372 582404 0 0 0 113 1083 2285 85 15 0 0 0
3 0 0 442228 66372 582776 0 0 0 40 1112 2348 89 11 0 0 0
4 0 0 441764 66372 583140 0 0 0 0 1075 2315 88 12 0 0 0
5 0 0 441272 66372 583512 0 0 0 33 1130 2335 84 16 0 0 0
5 0 0 440900 66372 583852 0 0 0 33 1094 2242 85 15 0 0 0
5 0 0 440472 66372 584152 0 0 0 1387 979 2029 91 9 0 0 0
4 0 0 440028 66372 584512 0 0 0 0 1103 2273 85 15 0 0 0
5 0 0 439564 66372 584828 0 0 0 47 1077 2291 85 15 0 0 0
3 0 0 439288 66372 585188 0 0 0 37 1055 2134 87 13 0 0 0
0 0 0 439908 66372 585208 0 0 0 0 257 478 8 1 91 0 0
0 0 0 439948 66372 585208 0 0 0 7 101 209 0 0 100 0 0
0 0 0 439948 66372 585208 0 0 0 0 101 209 0 0 100 0 0
Name # reqs # fails Avg Min Max | Median req/s
-----------------------------------------------------------------------------------------------------------
GET /admin/ 23 0(0.00%) 966 718 1225 | 1000 1.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 71 0(0.00%) 934 684 1225 | 930 6.86
-----------------------------------------------------------------------------------------------------------
GET /admin/ 117 0(0.00%) 925 623 1225 | 930 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 165 0(0.00%) 920 623 1225 | 930 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 211 0(0.00%) 918 623 1225 | 930 8.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 253 0(0.00%) 956 623 1481 | 950 7.50
-----------------------------------------------------------------------------------------------------------
GET /admin/ 298 0(0.00%) 965 623 1481 | 950 7.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 0(0.00%) 965 623 1481 | 950 7.10
-----------------------------------------------------------------------------------------------------------
1 délai de traitement de la demande selon le taux de réalisation de la demande(ms)
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 960 1000 1100 1100 1200 1200 1400 1500 1481
-----------------------------------------------------------------------------------------------------------
La charge moyenne est élevée et le temps de traitement par requête augmente progressivement. Définir le nombre de processus x3 autour d'un cœur est une impression difficile.
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 483180 67360 605444 0 0 24 20 271 524 8 2 90 0 0
0 0 0 483480 67360 605464 0 0 0 0 158 282 0 0 100 0 0
1 0 0 483520 67368 605520 0 0 0 204 281 571 12 2 86 0 0
3 0 0 482308 67392 605792 0 0 0 345 1095 2047 82 11 7 0 0
3 0 0 481108 67408 606172 0 0 0 28 1163 2176 86 14 0 0 0
3 0 0 476772 67416 606540 0 0 0 9 1110 2053 88 12 0 0 0
3 0 0 475340 67440 606912 0 0 0 36 1123 2116 85 15 0 0 0
2 0 0 473732 67464 607272 0 0 0 72 1108 2105 86 14 0 0 0
3 0 0 472524 67480 607616 0 0 0 27 1154 2202 83 17 0 0 0
2 0 0 471256 67488 607992 0 0 0 11 1140 2188 85 15 0 0 0
3 0 0 469984 67512 608296 0 0 0 36 1088 2055 88 12 0 0 0
3 0 0 469584 67536 608708 0 0 0 33 1166 2223 88 12 0 0 0
2 0 0 467008 67552 609080 0 0 0 60 1134 2201 85 15 0 0 0
3 0 0 463308 67560 609432 0 0 0 544 1137 2044 87 13 0 0 0
3 0 0 462624 67584 609804 0 0 0 40 1163 2146 86 14 0 0 0
2 0 0 462136 67608 610168 0 0 0 824 1137 2158 83 17 0 0 0
4 0 0 461604 67608 610532 0 0 0 0 1132 2195 88 12 0 0 0
0 0 0 461728 67632 610608 0 0 0 35 459 859 22 5 73 0 0
0 0 0 461672 67632 610608 0 0 0 37 138 253 0 0 100 0 0
0 0 0 461672 67632 610608 0 0 0 0 122 240 0 1 99 0 0
Name # reqs # fails Avg Min Max | Median req/s
-----------------------------------------------------------------------------------------------------------
GET /admin/ 23 0(0.00%) 1040 736 1335 | 1100 3.00
-----------------------------------------------------------------------------------------------------------
GET /admin/ 70 0(0.00%) 961 736 1335 | 940 7.14
-----------------------------------------------------------------------------------------------------------
GET /admin/ 116 0(0.00%) 950 736 1335 | 930 7.80
-----------------------------------------------------------------------------------------------------------
GET /admin/ 162 0(0.00%) 946 736 1335 | 940 7.80
-----------------------------------------------------------------------------------------------------------
GET /admin/ 210 0(0.00%) 935 736 1335 | 920 7.80
-----------------------------------------------------------------------------------------------------------
GET /admin/ 256 0(0.00%) 939 736 1335 | 930 7.80
-----------------------------------------------------------------------------------------------------------
GET /admin/ 287 0(0.00%) 932 736 1335 | 920 7.90
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 0(0.00%) 935 736 1335 | 920 7.90
-----------------------------------------------------------------------------------------------------------
1 délai de traitement de la demande selon le taux de réalisation de la demande(ms)
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
-----------------------------------------------------------------------------------------------------------
GET /admin/ 300 920 960 980 990 1100 1100 1100 1200 1335
-----------------------------------------------------------------------------------------------------------
Les performances de l'application Web sont du côté Nginx (serveur Web) et la charge d'E / S du côté du serveur DB. Puisqu'il est impliqué, il est difficile de conclure avec ce réglage, mais en ce qui concerne cette mesure, c'est du côté du serveur d'application. J'ai eu l'impression que processus: n et thread: 1 fonctionnaient mieux que processus: 1 et thread: n. Pour l'instant, à titre indicatif, le nombre de processus est de x2 et le nombre de threads est de 1, tout en regardant la situation. Je pense qu'il vaut mieux trouver le réglage optimal.
Recommended Posts