Class: UU::OS::Util::ServerStatistics

Inherits:
Object
  • Object
show all
Defined in:
uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb

Overview

Object encapsulating server usage statistics.

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (ServerStatistics) initialize(max_request_time)

Creates new instance of statistics.

Parameters:

  • max_request_time (Fixnum)

    Maximum expected request time.



45
46
47
48
49
50
51
52
53
54
55
56
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 45

def initialize(max_request_time)
  @max_request_time = max_request_time
  @start_time = Time.now
  @last_request_time = nil
  @last_client_error_time = nil
  @last_server_error_time = nil
  @request_count = 0
  @client_error_count = 0
  @server_error_count = 0
  @concurrent_requests = 0
  @request_histogram = UU::OS::Util::Histogram.new(1, max_request_time * 1000000, max_request_time * 10)
end

Instance Attribute Details

- (Fixnum) client_error_count (readonly)

Number of failed requests caused by client error.

Returns:

  • (Fixnum)

    Total client error count.



33
34
35
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 33

def client_error_count
  @client_error_count
end

- (Fixnum) concurrent_requests (readonly)

Number of concurrently processed requests.

Returns:

  • (Fixnum)

    Concurrently processed requests.



41
42
43
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 41

def concurrent_requests
  @concurrent_requests
end

- (Time) last_client_error_time (readonly)

Last time of error caused by client.

Returns:

  • (Time)

    Last client error time.



20
21
22
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 20

def last_client_error_time
  @last_client_error_time
end

- (Time) last_request_time (readonly)

Last request time.

Returns:

  • (Time)

    Last request time.



16
17
18
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 16

def last_request_time
  @last_request_time
end

- (Time) last_server_error_time (readonly)

Last time of error caused by internal server problem.

Returns:

  • (Time)

    Last server error time.



25
26
27
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 25

def last_server_error_time
  @last_server_error_time
end

- (Fixnum) request_count (readonly)

Total count of processed requests.

Returns:

  • (Fixnum)

    Total request count.



29
30
31
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 29

def request_count
  @request_count
end

- (Fixnum) server_error_count (readonly)

Number of failed requests caused by internal server error.

Returns:

  • (Fixnum)

    Total server error count.



37
38
39
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 37

def server_error_count
  @server_error_count
end

- (Time) start_time (readonly)

Server start time.

Returns:

  • (Time)

    Server start time.



12
13
14
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 12

def start_time
  @start_time
end

Instance Method Details

- (Fixnum) average_request_time

Returns average request time.

Returns:

  • (Fixnum)

    Averate request time in nanoseconds.



123
124
125
126
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 123

def average_request_time
  res = @request_histogram.average
  res ? res * 1000 : res
end

- (void) begin_request

This method returns an undefined value.

Method to be called on beginning of request processing.



66
67
68
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 66

def begin_request
  @concurrent_requests += 1
end

- (Fixnum) max_request_time

Returns slowest request time.

Returns:

  • (Fixnum)

    Slowest request time in nanoseconds.



116
117
118
119
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 116

def max_request_time
  res = @request_histogram.max
  res ? res * 1000 : res
end

- (Fixnum) min_request_time

Returns fastest request time.

Returns:

  • (Fixnum)

    Fastest request time in nanoseconds.



109
110
111
112
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 109

def min_request_time
  res = @request_histogram.min
  res ? res * 1000 : res
end

- (void) record_client_error(duration)

This method returns an undefined value.

Method to be called upon request failed by client error.

Parameters:

  • duration (Fixnum)

    Processing time in nanoseconds.



84
85
86
87
88
89
90
91
92
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 84

def record_client_error(duration)
  time = Time.now
  @last_request_time = time
  @last_client_error_time = time
  @request_count += 1
  @client_error_count += 1
  @concurrent_requests -= 1
  @request_histogram.record(duration / 1000)
end

- (void) record_request(duration)

This method returns an undefined value.

Method to be called upon sucessfuly processed request.

Parameters:

  • duration (Fixnum)

    Processing time in nanoseconds.



73
74
75
76
77
78
79
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 73

def record_request(duration)
  time = Time.now
  @last_request_time = time
  @request_count += 1
  @concurrent_requests -= 1
  @request_histogram.record(duration / 1000)
end

- (void) record_server_error(duration)

This method returns an undefined value.

Method to be called upon request failed by server error.

Parameters:

  • duration (Fixnum)

    Processing time in nanoseconds.



97
98
99
100
101
102
103
104
105
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 97

def record_server_error(duration)
  time = Time.now
  @last_request_time = time
  @last_server_error_time = time
  @request_count += 1
  @server_error_count += 1
  @concurrent_requests -= 1
  @request_histogram.record(duration / 1000)
end

- (Fixnum) request_time_percentile(val)

Returns value of request time percentile.

Parameters:

  • val (Fixnum)

    Requested percentile (between 0 and 100).

Returns:

  • (Fixnum)

    Valuse of request time percentile (in nanoseconds).



131
132
133
134
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 131

def request_time_percentile(val)
  res = @request_histogram.percentile(val)
  res ? res * 1000 : res
end

- (void) reset!

This method returns an undefined value.

Resets statistics.



138
139
140
141
142
143
144
145
146
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 138

def reset!
  @last_request_time = nil
  @last_client_error_time = nil
  @last_server_error_time = nil
  @request_count = 0
  @client_error_count = 0
  @server_error_count = 0
  @request_histogram = UU::OS::Util::Histogram.new(1, @max_request_time * 1000000, @max_request_time * 10)
end

- (String) uptime

Server uptime (with seconds precision).

Returns:

  • (String)

    Server uptime (with seconds precision).



60
61
62
# File 'uu_os_application-server-2.7.3/lib/uu/os/util/server_statistics.rb', line 60

def uptime
  Time.at(Time.now - @start_time).utc.strftime("%H:%M:%S")
end