test_performance.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. const { Subscription, Node } = require('./src/models');
  2. const MultiSubscriptionManager = require('./src/core/multiSubscriptionManager');
  3. async function testPerformance() {
  4. try {
  5. console.log('=== 性能测试 ===');
  6. // 创建测试订阅
  7. const testSubscription = await Subscription.create({
  8. name: '性能测试订阅',
  9. url: 'http://so.xfxssr.me/api/v1/client/subscribe?token=7854d59f38ac51700730b9e782c5160c',
  10. description: '用于测试性能的订阅',
  11. speedTestConfig: {
  12. testCount: 3,
  13. timeout: 10000,
  14. testUrls: ['https://www.google.com'],
  15. speedTestEnabled: true
  16. },
  17. notifyConfig: {
  18. enabled: true,
  19. notifyOnSpeedTest: true,
  20. notifyOnNodeUpdate: true,
  21. webhookUrl: '',
  22. emailConfig: null
  23. }
  24. });
  25. console.log('✅ 创建测试订阅成功');
  26. // 创建大量测试节点
  27. const nodeCount = 50;
  28. console.log(`\n创建 ${nodeCount} 个测试节点...`);
  29. const testNodes = [];
  30. for (let i = 1; i <= nodeCount; i++) {
  31. testNodes.push({
  32. name: `性能测试节点${i}`,
  33. type: 'ss',
  34. server: `server${i}.example.com`,
  35. port: 443 + (i % 100),
  36. method: 'aes-256-gcm',
  37. password: `password${i}`,
  38. subscriptionId: testSubscription.id,
  39. isActive: true,
  40. status: 'offline'
  41. });
  42. }
  43. // 批量创建节点
  44. const startTime = Date.now();
  45. await Node.bulkCreate(testNodes);
  46. const createTime = Date.now() - startTime;
  47. console.log(`✅ 批量创建 ${nodeCount} 个节点完成,耗时: ${createTime}ms`);
  48. // 更新订阅节点数量
  49. await testSubscription.update({
  50. nodeCount: nodeCount,
  51. lastUpdateTime: new Date()
  52. });
  53. // 测试多订阅管理器性能
  54. console.log('\n测试多订阅管理器性能...');
  55. const manager = new MultiSubscriptionManager();
  56. const managerStartTime = Date.now();
  57. const activeSubscriptions = await manager.getActiveSubscriptions();
  58. const managerTime = Date.now() - managerStartTime;
  59. console.log(`✅ 获取活跃订阅完成,耗时: ${managerTime}ms`);
  60. console.log(` 活跃订阅数量: ${activeSubscriptions.length}`);
  61. // 测试状态获取性能
  62. const statusStartTime = Date.now();
  63. const status = await manager.getStatus();
  64. const statusTime = Date.now() - statusStartTime;
  65. console.log(`✅ 获取状态完成,耗时: ${statusTime}ms`);
  66. // 清理测试数据
  67. console.log('\n清理测试数据...');
  68. await testSubscription.destroy();
  69. console.log('✅ 测试数据清理完成');
  70. console.log('\n=== 性能测试完成 ===');
  71. console.log(`总结:`);
  72. console.log(` - 批量创建 ${nodeCount} 个节点: ${createTime}ms`);
  73. console.log(` - 获取活跃订阅: ${managerTime}ms`);
  74. console.log(` - 获取状态: ${statusTime}ms`);
  75. } catch (error) {
  76. console.error('❌ 性能测试失败:', error.message);
  77. }
  78. }
  79. // 运行测试
  80. testPerformance();