sanford 0.6.5 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bench/report.txt +32 -28
- data/lib/sanford/server.rb +7 -6
- data/lib/sanford/version.rb +1 -1
- data/sanford.gemspec +1 -1
- metadata +8 -8
data/bench/report.txt
CHANGED
@@ -2,36 +2,40 @@ Running benchmark report...
|
|
2
2
|
|
3
3
|
Hitting "simple" service with {}, 10000 times
|
4
4
|
....................................................................................................
|
5
|
-
Total Time:
|
6
|
-
Average Time: 0.
|
7
|
-
Min Time: 0.
|
8
|
-
Max Time:
|
5
|
+
Total Time: 8970.7162ms
|
6
|
+
Average Time: 0.8970ms
|
7
|
+
Min Time: 0.5419ms
|
8
|
+
Max Time: 108.7779ms
|
9
9
|
|
10
10
|
Distribution (number of requests):
|
11
|
-
0ms:
|
12
|
-
0.5ms:
|
13
|
-
0.6ms:
|
14
|
-
0.7ms:
|
15
|
-
0.8ms:
|
16
|
-
0.9ms:
|
17
|
-
1ms:
|
18
|
-
1.0ms:
|
19
|
-
1.1ms:
|
20
|
-
1.2ms:
|
21
|
-
1.3ms:
|
22
|
-
1.4ms:
|
23
|
-
1.
|
11
|
+
0ms: 9634
|
12
|
+
0.5ms: 2063
|
13
|
+
0.6ms: 5113
|
14
|
+
0.7ms: 1448
|
15
|
+
0.8ms: 675
|
16
|
+
0.9ms: 335
|
17
|
+
1ms: 319
|
18
|
+
1.0ms: 129
|
19
|
+
1.1ms: 67
|
20
|
+
1.2ms: 44
|
21
|
+
1.3ms: 20
|
22
|
+
1.4ms: 23
|
23
|
+
1.5ms: 11
|
24
|
+
1.6ms: 13
|
24
25
|
1.7ms: 1
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
26
|
+
1.8ms: 6
|
27
|
+
1.9ms: 5
|
28
|
+
2ms: 11
|
29
|
+
3ms: 9
|
30
|
+
4ms: 4
|
31
|
+
5ms: 1
|
32
|
+
21ms: 1
|
33
|
+
87ms: 1
|
34
|
+
90ms: 1
|
35
|
+
97ms: 5
|
36
|
+
98ms: 9
|
37
|
+
99ms: 2
|
38
|
+
100ms: 2
|
39
|
+
108ms: 1
|
36
40
|
|
37
41
|
Done running benchmark report
|
data/lib/sanford/server.rb
CHANGED
@@ -34,18 +34,16 @@ module Sanford
|
|
34
34
|
@sanford_host_data = Sanford::HostData.new(@sanford_host, @sanford_host_options)
|
35
35
|
end
|
36
36
|
|
37
|
-
# `serve
|
38
|
-
# a new instance of the handler for every request.
|
37
|
+
# `serve!` can be called at the same time by multiple threads. Thus we
|
38
|
+
# create a new instance of the handler for every request.
|
39
39
|
# When using TCP_CORK, you "cork" the socket, handle it and then "uncork"
|
40
40
|
# it, see the `TCPCork` module for more info.
|
41
41
|
|
42
|
-
def serve(socket)
|
43
|
-
TCPCork.apply(socket)
|
42
|
+
def serve!(socket)
|
44
43
|
connection = Connection.new(socket)
|
45
44
|
if !self.keep_alive_connection?(connection)
|
46
45
|
Sanford::Worker.new(@sanford_host_data, connection).run
|
47
46
|
end
|
48
|
-
TCPCork.remove(socket)
|
49
47
|
end
|
50
48
|
|
51
49
|
protected
|
@@ -59,7 +57,8 @@ module Sanford
|
|
59
57
|
DEFAULT_TIMEOUT = 1
|
60
58
|
|
61
59
|
def initialize(socket)
|
62
|
-
@
|
60
|
+
@socket = socket
|
61
|
+
@connection = Sanford::Protocol::Connection.new(@socket)
|
63
62
|
@timeout = (ENV['SANFORD_TIMEOUT'] || DEFAULT_TIMEOUT).to_f
|
64
63
|
end
|
65
64
|
|
@@ -68,7 +67,9 @@ module Sanford
|
|
68
67
|
end
|
69
68
|
|
70
69
|
def write_data(data)
|
70
|
+
TCPCork.apply(@socket)
|
71
71
|
@connection.write data
|
72
|
+
TCPCork.remove(@socket)
|
72
73
|
end
|
73
74
|
|
74
75
|
def peek_data
|
data/lib/sanford/version.rb
CHANGED
data/sanford.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.add_dependency("dat-tcp", ["~>0.
|
20
|
+
gem.add_dependency("dat-tcp", ["~>0.4"])
|
21
21
|
gem.add_dependency("ns-options", ["~>1.0"])
|
22
22
|
gem.add_dependency("sanford-protocol", ["~>0.5"])
|
23
23
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanford
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 7
|
9
|
+
- 0
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Collin Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-07-15 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
@@ -25,11 +25,11 @@ dependencies:
|
|
25
25
|
requirements:
|
26
26
|
- - ~>
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
28
|
+
hash: 3
|
29
29
|
segments:
|
30
30
|
- 0
|
31
|
-
-
|
32
|
-
version: "0.
|
31
|
+
- 4
|
32
|
+
version: "0.4"
|
33
33
|
requirement: *id001
|
34
34
|
name: dat-tcp
|
35
35
|
type: :runtime
|