

v 1.1
@f6d460764a396e25f1b08fb4c97ec084b69f6a24
--- README.md
+++ README.md
... | ... | @@ -15,3 +15,11 @@ |
15 | 15 |
TPS: xx.xxx (x는 숫자입니다) |
16 | 16 |
위와 같이 나온다면 정상적으로 실행된 상태입니다. |
17 | 17 |
|
18 |
+v1.0 |
|
19 |
+초기 버전입니다. |
|
20 |
+ |
|
21 |
+v1.1 |
|
22 |
+1회당 보내는 요청의 수를 1개에서 설정에 따라서 |
|
23 |
+설정을 변경하는 방법은 server.js 5번째 줄에서 |
|
24 |
+concurrency : 동시적으로 보낼 회선 수 (한번에 몇개씩 병렬처리를 진행할 것인지) |
|
25 |
+로 변경하시면 됩니다. |
--- server.js
+++ server.js
... | ... | @@ -1,7 +1,8 @@ |
1 | 1 |
const axios = require('axios'); |
2 |
-const cors = require('cors') |
|
2 |
+ |
|
3 | 3 |
// 버튼을 누를 때 실행될 함수 |
4 | 4 |
async function sendLoginRequest() { |
5 |
+ const concurrency = 20; |
|
5 | 6 |
const url = 'http://127.0.0.1:8080/auth/login'; // 요청을 보낼 URL |
6 | 7 |
const payload = { |
7 | 8 |
id: 'id', |
... | ... | @@ -10,21 +11,44 @@ |
10 | 11 |
|
11 | 12 |
try { |
12 | 13 |
const startTime = Date.now(); // 요청 시작 시간 기록 |
13 |
- // const response = await axios.post(url, payload) |
|
14 |
- for(let a=0;a<100;a++){ |
|
15 |
- const response = await axios.post(url, payload, { withCredentials: true }) |
|
16 |
- // POST 요청 보내기 |
|
14 |
+ const promises = []; |
|
15 |
+ const responses = []; // 응답을 저장할 배열 |
|
16 |
+ const num_ping = 500 |
|
17 |
+ for (let a = 0; a < num_ping; a++) { |
|
18 |
+ promises.push( |
|
19 |
+ axios.post(url, payload, { withCredentials: true }) |
|
20 |
+ ); |
|
21 |
+ |
|
22 |
+ if (promises.length >= concurrency) { |
|
23 |
+ // 병렬로 보낼 요청 수에 도달하면 Promise.all로 요청을 보냅니다. |
|
24 |
+ const check = await Promise.all(promises); |
|
25 |
+ responses.push(...check); |
|
26 |
+ promises.length = 0; // promises 배열 비우기 |
|
27 |
+ } |
|
17 | 28 |
} |
18 |
- const response = await axios.post(url, payload, { withCredentials: true }); // POST 요청 보내기 |
|
29 |
+ |
|
30 |
+ // 남은 요청을 보냅니다. |
|
31 |
+ const remaining = await Promise.all(promises); |
|
32 |
+ responses.push(...remaining); |
|
33 |
+ |
|
19 | 34 |
const endTime = Date.now(); // 요청 종료 시간 기록 |
20 | 35 |
|
21 |
- if (response.status === 200) { |
|
22 |
- console.log('통신 성공'); |
|
23 |
- const tps = 100000 / (endTime - startTime); // TPS 계산 (밀리초당 요청 수) |
|
24 |
- console.log(`TPS: ${tps.toFixed(3)}`); |
|
25 |
- } else { |
|
26 |
- console.error(`통신 실패: ${response.status}`); |
|
36 |
+ let successCount = 0; |
|
37 |
+ let failCount = 0; |
|
38 |
+ |
|
39 |
+ for (const response of responses) { |
|
40 |
+ if (response.status === 200) { |
|
41 |
+ successCount++; |
|
42 |
+ } else { |
|
43 |
+ failCount++; |
|
44 |
+ } |
|
27 | 45 |
} |
46 |
+ console.log(`10개씩 나눠서 `) |
|
47 |
+ console.log(`성공한 요청 수: ${successCount}`); |
|
48 |
+ console.log(`실패한 요청 수: ${failCount}`); |
|
49 |
+ |
|
50 |
+ const tps = num_ping*1000 / (endTime - startTime); // TPS 계산 (밀리초당 요청 수) |
|
51 |
+ console.log(`TPS: ${tps.toFixed(3)}`); |
|
28 | 52 |
} catch (error) { |
29 | 53 |
console.error(`에러 발생: ${error.message}`); |
30 | 54 |
} |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?