UNPKG

9.94 kBJavaScriptView Raw
1"use strict";
2// import * as bluebird from "bluebird"
3Object.defineProperty(exports, "__esModule", { value: true });
4const preload_1 = require("./preload");
5preload_1.preload();
6// // 使用bluebird输出完整的promise调用链
7// global.Promise = bluebird.Promise;
8// // 开启长堆栈
9// bluebird.config({
10// // Enable warnings
11// warnings: false,
12// // Enable long stack traces
13// longStackTraces: false,
14// // Enable cancellation
15// cancellation: false,
16// // Enable monitoring
17// monitoring: false
18// });
19const index_1 = require("../index");
20const pinus_logger_1 = require("pinus-logger");
21pinus_logger_1.configure('./config/log4js.json');
22// remote service interface path info list
23let records = [{
24 namespace: 'user',
25 serverType: 'test',
26 path: __dirname + '/remote/test'
27 }];
28let context = {
29 serverId: 'test-server-1'
30};
31// server info list
32let servers = [{
33 id: 'test-server-1',
34 serverType: 'test',
35 host: '127.0.0.1',
36 port: 3333
37 }];
38// route parameter passed to route function
39let routeParam = null;
40// route context passed to route function
41let routeContext = servers;
42// route function to caculate the remote server id
43let routeFunc = function (session, msg, context, cb) {
44 cb(null, context[0].id);
45};
46let client = new index_1.RpcClient({
47 routeContext: servers,
48 router: routeFunc,
49 context: context,
50 pendingSize: 10000000000
51});
52let start = null;
53client.start(async function (err) {
54 console.log('rpc client start ok.');
55 client.addProxies(records);
56 client.addServers(servers);
57 start = Date.now();
58 // runSerial();
59 // runParallels();
60 runOnlySends();
61});
62let num_requests = 100000;
63let times = 0;
64let mock_data_1 = 'hello';
65let mock_data_2 = 'hello';
66let num_repeat = 200; // 100 200 300 400 800
67for (let i = 0; i < num_repeat; i++) {
68 mock_data_2 += mock_data_1;
69}
70let mock_data_3 = {
71 a: 'run',
72 b: mock_data_2 + Date.now() + '_',
73 time: Date.now()
74};
75let payload = mock_data_3;
76// console.log(new Buffer(payload).length / 1024 + 'k');
77console.log(Buffer.from(JSON.stringify(payload)).length / 1024 + 'k');
78async function runParallels() {
79 let maxParallel = 1;
80 while (true) {
81 if (maxParallel > 10000) {
82 maxParallel = 10000;
83 }
84 let now = Date.now();
85 start = now;
86 await runParallel(maxParallel);
87 now = Date.now();
88 let cost = now - start;
89 console.log(`runParallel ${num_requests} num requests(maxParallel:${maxParallel}) cost ${cost}ms , ${(num_requests / (cost / 1000)).toFixed(2)}ops/sec`);
90 maxParallel = maxParallel * 2;
91 }
92}
93async function runParallel(maxParallel) {
94 let all = [];
95 for (let times = 0; times < num_requests; times++) {
96 all.push(rpcRequest(payload));
97 if (all.length === maxParallel) {
98 await Promise.all(all);
99 all.length = 0;
100 }
101 }
102 await Promise.all(all);
103}
104async function runSerial() {
105 if (times > num_requests) {
106 return;
107 }
108 if (times === num_requests) {
109 let now = Date.now();
110 let cost = now - start;
111 console.log(`runSerial ${num_requests} num requests cost ${cost}ms , ${(num_requests / (cost / 1000)).toFixed(2)}ops/sec`);
112 times = 0;
113 start = now;
114 // return;
115 await runSerial();
116 return;
117 }
118 times++;
119 await rpcRequest(payload);
120 runSerial();
121}
122async function rpcRequest(param) {
123 let result = await client.proxies.user.test.service.echo(routeParam, mock_data_1, 123);
124 // console.log(count++);
125}
126async function runOnlySends() {
127 let maxParallel = 1;
128 while (true) {
129 if (maxParallel > 10000) {
130 maxParallel = 10000;
131 }
132 let now = Date.now();
133 start = now;
134 runOnlySend(maxParallel);
135 now = Date.now();
136 let cost = now - start;
137 console.log(`runOnlySend ${num_requests} num requests(maxParallel:${maxParallel}) cost ${cost}ms , ${(num_requests / (cost / 1000)).toFixed(2)}ops/sec`);
138 maxParallel = maxParallel * 2;
139 }
140}
141function runOnlySend(maxParallel) {
142 for (let times = 0; times < num_requests; times++) {
143 rpcRequest(payload);
144 }
145}
146//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2hfY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc2FtcGxlL2JlbmNoX2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUNBQXVDOztBQUV2Qyx1Q0FBa0M7QUFDbEMsaUJBQU8sRUFBRSxDQUFDO0FBR1YsK0JBQStCO0FBQy9CLHFDQUFxQztBQUNyQyxXQUFXO0FBQ1gsb0JBQW9CO0FBQ3BCLHlCQUF5QjtBQUN6Qix1QkFBdUI7QUFDdkIsa0NBQWtDO0FBQ2xDLDhCQUE4QjtBQUM5Qiw2QkFBNkI7QUFDN0IsMkJBQTJCO0FBQzNCLDJCQUEyQjtBQUMzQix3QkFBd0I7QUFDeEIsTUFBTTtBQUdOLG9DQUF5RTtBQUN6RSwrQ0FBeUM7QUFDekMsd0JBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRWxDLDBDQUEwQztBQUMxQyxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQ2IsU0FBUyxFQUFFLE1BQU07UUFDakIsVUFBVSxFQUFFLE1BQU07UUFDbEIsSUFBSSxFQUFFLFNBQVMsR0FBRyxjQUFjO0tBQ2pDLENBQUMsQ0FBQztBQUVILElBQUksT0FBTyxHQUFHO0lBQ1osUUFBUSxFQUFFLGVBQWU7Q0FDMUIsQ0FBQztBQUVGLG1CQUFtQjtBQUNuQixJQUFJLE9BQU8sR0FDVCxDQUFDO1FBQ0MsRUFBRSxFQUFFLGVBQWU7UUFDbkIsVUFBVSxFQUFFLE1BQU07UUFDbEIsSUFBSSxFQUFFLFdBQVc7UUFDakIsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7QUFDTCwyQ0FBMkM7QUFDM0MsSUFBSSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBRTlCLHlDQUF5QztBQUN6QyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUM7QUFHM0Isa0RBQWtEO0FBQ2xELElBQUksU0FBUyxHQUFHLFVBQVUsT0FBK0IsRUFBRSxHQUFXLEVBQUUsT0FBcUIsRUFBRSxFQUEyQztJQUN4SSxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8s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
\No newline at end of file