1 | ;
|
2 | // import * as bluebird from "bluebird"
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | const preload_1 = require("./preload");
|
5 | preload_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 | // });
|
19 | const index_1 = require("../index");
|
20 | const pinus_logger_1 = require("pinus-logger");
|
21 | pinus_logger_1.configure('./config/log4js.json');
|
22 | // remote service interface path info list
|
23 | let records = [{
|
24 | namespace: 'user',
|
25 | serverType: 'test',
|
26 | path: __dirname + '/remote/test'
|
27 | }];
|
28 | let context = {
|
29 | serverId: 'test-server-1'
|
30 | };
|
31 | // server info list
|
32 | let 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
|
39 | let routeParam = null;
|
40 | // route context passed to route function
|
41 | let routeContext = servers;
|
42 | // route function to caculate the remote server id
|
43 | let routeFunc = function (session, msg, context, cb) {
|
44 | cb(null, context[0].id);
|
45 | };
|
46 | let client = new index_1.RpcClient({
|
47 | routeContext: servers,
|
48 | router: routeFunc,
|
49 | context: context,
|
50 | pendingSize: 10000000000
|
51 | });
|
52 | let start = null;
|
53 | client.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 | });
|
62 | let num_requests = 100000;
|
63 | let times = 0;
|
64 | let mock_data_1 = 'hello';
|
65 | let mock_data_2 = 'hello';
|
66 | let num_repeat = 200; // 100 200 300 400 800
|
67 | for (let i = 0; i < num_repeat; i++) {
|
68 | mock_data_2 += mock_data_1;
|
69 | }
|
70 | let mock_data_3 = {
|
71 | a: 'run',
|
72 | b: mock_data_2 + Date.now() + '_',
|
73 | time: Date.now()
|
74 | };
|
75 | let payload = mock_data_3;
|
76 | // console.log(new Buffer(payload).length / 1024 + 'k');
|
77 | console.log(Buffer.from(JSON.stringify(payload)).length / 1024 + 'k');
|
78 | async 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 | }
|
93 | async 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 | }
|
104 | async 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 | }
|
122 | async function rpcRequest(param) {
|
123 | let result = await client.proxies.user.test.service.echo(routeParam, mock_data_1, 123);
|
124 | // console.log(count++);
|
125 | }
|
126 | async 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 | }
|
141 | function 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 |