// Node.js 压力测试:50 并发持续创建申请 const BASE = 'http://172.31.12.249:18080/api/hss'; const H = { 'Content-Type': 'application/json', 'X-Tenant-Id': '1', 'X-Org-Id': '1', 'X-User-Role': 'ADMIN' }; let total = 0, p200 = 0, p422 = 0, p4xx = 0, p5xx = 0; const start = Date.now(); const CONCURRENCY = 50; const DURATION_MS = 15000; async function createApplication() { const key = 'stress-' + Math.random().toString(36).slice(2, 12); try { const r = await fetch(BASE + '/applications', { method: 'POST', headers: { ...H, 'Idempotency-Key': key }, body: JSON.stringify({ patientId: '2001', serviceType: 'HOME_CARE', channel: 'WECHAT', contactName: 'StressTest', contactPhone: '13800000000', address: '梅江区', regionCode: '441402001' }) }); total++; if (r.status === 200) p200++; else if (r.status === 422) p422++; else if (r.status >= 400 && r.status < 500) p4xx++; else p5xx++; } catch (e) { total++; p5xx++; } } async function main() { console.log(`=== 压力测试: ${CONCURRENCY}并发 持续${DURATION_MS/1000}s 创建申请 ===\n`); const endTime = Date.now() + DURATION_MS; const tasks = []; while (Date.now() < endTime) { for (let i = 0; i < CONCURRENCY; i++) { tasks.push(createApplication()); } if (tasks.length > 500) { await Promise.all(tasks.splice(0, 200)); } await new Promise(r => setTimeout(r, 50)); } await Promise.all(tasks); const elapsed = ((Date.now() - start) / 1000).toFixed(1); const rps = (total / elapsed).toFixed(1); console.log(`\n=== 压力测试结果 ===`); console.log(`总请求: ${total} 200: ${p200} 422(重复校验): ${p422} 其他4xx: ${p4xx} 5xx: ${p5xx}`); console.log(`耗时: ${elapsed}s RPS: ${rps} 成功率: ${(p200/total*100).toFixed(1)}%`); } main().catch(console.error);