Skip to content

Weird performance on the load #601

@gobwas

Description

@gobwas

Hello!

Im currently researching technologies for some web app, and have wrote a simple http server as you show in your example:

extern crate hyper;

use std::io::Write;

use hyper::Server;
use hyper::server::Request;
use hyper::server::Response;
use hyper::net::Fresh;

fn hello(_: Request, res: Response<Fresh>) {
    let mut res = res.start().unwrap();
    res.write_all(b"Hello World!").unwrap();
    res.end().unwrap();
}

fn main() {
    Server::http("127.0.0.1:4000").unwrap().handle(hello);
}

Then I used JMeter for emulate some load, and thats what I've found, for example, in comparsion with Node.js:

Samples Average Median 90% 95% 99% Min Max Throughput /sec
hyper.rs 2500 595 0 4 5619 10859 0 12387
node.js 2500 2 2 6 7 9 0 30

50'th and 90'th percentiles are very fast, and faster than node, but, then, 95 and higher - is much lower.
It means, that 95% of requests are faster than node, but 5% much slower.

Then I've looked at detailed results of requests, and that is what I have found (more attention on the Duration column - it repeat high latency in period of ~50 requests):

Sample Thread Duration(ms) Bytes Latency
1 Pure hello 1-2 4 106 4
2 Pure hello 1-1 11 106 11
3 Pure hello 1-3 2 106 2
4 Pure hello 1-4 4 106 4
5 Pure hello 1-5 6 106 6
6 Pure hello 1-1 0 106 0
7 Pure hello 1-2 1 106 1
8 Pure hello 1-3 1 106 1
9 Pure hello 1-4 1 106 1
10 Pure hello 1-5 1 106 1
11 Pure hello 1-1 0 106 0
12 Pure hello 1-2 0 106 0
13 Pure hello 1-3 1 106 1
14 Pure hello 1-4 1 106 1
15 Pure hello 1-5 1 106 1
16 Pure hello 1-2 0 106 0
17 Pure hello 1-1 0 106 0
18 Pure hello 1-3 0 106 0
19 Pure hello 1-4 0 106 0
20 Pure hello 1-5 0 106 0
21 Pure hello 1-2 0 106 0
22 Pure hello 1-1 1 106 1
23 Pure hello 1-3 1 106 1
24 Pure hello 1-4 1 106 1
25 Pure hello 1-5 1 106 1
26 Pure hello 1-2 1 106 1
27 Pure hello 1-1 1 106 1
28 Pure hello 1-3 0 106 0
29 Pure hello 1-4 0 106 0
30 Pure hello 1-5 0 106 0
31 Pure hello 1-2 0 106 0
32 Pure hello 1-1 0 106 0
33 Pure hello 1-4 0 106 0
34 Pure hello 1-3 0 106 0
35 Pure hello 1-5 0 106 0
36 Pure hello 1-2 0 106 0
37 Pure hello 1-1 0 106 0
38 Pure hello 1-4 0 106 0
39 Pure hello 1-3 0 106 0
40 Pure hello 1-5 0 106 0
41 Pure hello 1-2 1 106 1
42 Pure hello 1-1 0 106 0
43 Pure hello 1-4 0 106 0
44 Pure hello 1-3 0 106 0
45 Pure hello 1-5 0 106 0
46 Pure hello 1-2 0 106 0
47 Pure hello 1-1 0 106 0
48 Pure hello 1-4 0 106 0
49 Pure hello 1-3 0 106 0
50 Pure hello 1-5 0 106 0
51 Pure hello 1-6 448 106 448
52 Pure hello 1-7 480 106 480
53 Pure hello 1-8 478 106 478
54 Pure hello 1-9 476 106 476
55 Pure hello 1-10 473 106 473
56 Pure hello 1-6 0 106 0
57 Pure hello 1-8 0 106 0
58 Pure hello 1-7 1 106 1
59 Pure hello 1-10 0 106 0
60 Pure hello 1-9 0 106 0
61 Pure hello 1-6 0 106 0
62 Pure hello 1-7 1 106 1
63 Pure hello 1-8 1 106 1
64 Pure hello 1-9 0 106 0
65 Pure hello 1-10 0 106 0
66 Pure hello 1-6 1 106 1
67 Pure hello 1-7 0 106 0
68 Pure hello 1-8 0 106 0
69 Pure hello 1-9 1 106 1
70 Pure hello 1-10 1 106 1
71 Pure hello 1-6 0 106 0
72 Pure hello 1-7 0 106 0
73 Pure hello 1-8 1 106 1
74 Pure hello 1-9 1 106 1
75 Pure hello 1-10 0 106 0
76 Pure hello 1-6 1 106 1
77 Pure hello 1-8 0 106 0
78 Pure hello 1-7 0 106 0
79 Pure hello 1-10 0 106 0
80 Pure hello 1-9 0 106 0
81 Pure hello 1-6 1 106 1
82 Pure hello 1-8 1 106 1
83 Pure hello 1-7 1 106 1
84 Pure hello 1-10 1 106 1
85 Pure hello 1-9 1 106 1
86 Pure hello 1-8 1 106 1
87 Pure hello 1-6 2 106 2
88 Pure hello 1-7 2 106 2
89 Pure hello 1-9 7 106 7
90 Pure hello 1-10 8 106 8
91 Pure hello 1-8 0 106 0
92 Pure hello 1-6 0 106 0
93 Pure hello 1-7 0 106 0
94 Pure hello 1-9 0 106 0
95 Pure hello 1-10 0 106 0
96 Pure hello 1-8 0 106 0
97 Pure hello 1-6 0 106 0
98 Pure hello 1-7 0 106 0
99 Pure hello 1-10 0 106 0
100 Pure hello 1-9 0 106 0
101 Pure hello 1-13 895 106 895
102 Pure hello 1-12 898 106 898
103 Pure hello 1-11 903 106 903
104 Pure hello 1-14 893 106 893
105 Pure hello 1-15 888 106 888
106 Pure hello 1-196 116 1791 0
107 Pure hello 1-12 0 106 0
108 Pure hello 1-13 0 106 0
109 Pure hello 1-11 0 106 0
110 Pure hello 1-14 0 106 0
111 Pure hello 1-15 1 106 1
112 Pure hello 1-12 0 106 0
113 Pure hello 1-11 1 106 1
114 Pure hello 1-13 0 106 0
115 Pure hello 1-15 0 106 0
116 Pure hello 1-14 0 106 0
117 Pure hello 1-11 1 106 1
118 Pure hello 1-12 1 106 1
119 Pure hello 1-13 1 106 1
120 Pure hello 1-14 0 106 0
121 Pure hello 1-15 0 106 0
122 Pure hello 1-12 1 106 1
123 Pure hello 1-13 0 106 0
124 Pure hello 1-11 1 106 1
125 Pure hello 1-15 1 106 1
126 Pure hello 1-14 1 106 1
127 Pure hello 1-13 1 106 1
128 Pure hello 1-12 1 106 1
129 Pure hello 1-11 0 106 0
130 Pure hello 1-15 1 106 1
131 Pure hello 1-14 1 106 1
132 Pure hello 1-12 0 106 0
133 Pure hello 1-13 0 106 0
134 Pure hello 1-11 0 106 0
135 Pure hello 1-14 0 106 0
136 Pure hello 1-15 0 106 0
137 Pure hello 1-13 0 106 0
138 Pure hello 1-12 0 106 0
139 Pure hello 1-11 0 106 0
140 Pure hello 1-15 1 106 1
141 Pure hello 1-14 1 106 1
142 Pure hello 1-13 1 106 1
143 Pure hello 1-12 0 106 0
144 Pure hello 1-11 0 106 0
145 Pure hello 1-15 0 106 0
146 Pure hello 1-14 0 106 0
147 Pure hello 1-13 1 106 1
148 Pure hello 1-11 1 106 1
149 Pure hello 1-12 1 106 1
150 Pure hello 1-15 1 106 1
151 Pure hello 1-14 1 106 1
152 Pure hello 1-16 1117 106 1117
153 Pure hello 1-18 1110 106 1110
154 Pure hello 1-17 1114 106 1114
155 Pure hello 1-20 1132 106 1132
156 Pure hello 1-19 1139 106 1139
157 Pure hello 1-18 0 106 0
158 Pure hello 1-16 0 106 0
159 Pure hello 1-17 0 106 0
160 Pure hello 1-20 0 106 0
161 Pure hello 1-19 0 106 0
162 Pure hello 1-18 0 106 0
163 Pure hello 1-16 1 106 1
164 Pure hello 1-17 1 106 1
165 Pure hello 1-19 1 106 1
166 Pure hello 1-20 1 106 1
167 Pure hello 1-16 1 106 1
168 Pure hello 1-17 1 106 1

... and so on.

Is it a bug or feature? 😄

Thanks )

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions