Welcome! Log In Create A New Profile

Advanced

[nginx] svn commit: r5116 - in trunk/src: core event http/modules

Anonymous User
March 15, 2013 04:02PM
Author: vbart
Date: 2013-03-15 20:00:49 +0000 (Fri, 15 Mar 2013)
New Revision: 5116
URL: http://trac.nginx.org/nginx/changeset/5116/nginx

Log:
Status: introduced the "ngx_stat_waiting" counter.

And corresponding variable $connections_waiting was added.

Previously, waiting connections were counted as the difference between
active connections and the sum of reading and writing connections.
That made it impossible to count more than one request in one connection
as reading or writing (as is the case for SPDY).

Also, we no longer count connections in handshake state as waiting.


Modified:
trunk/src/core/ngx_connection.c
trunk/src/event/ngx_event.c
trunk/src/event/ngx_event.h
trunk/src/http/modules/ngx_http_stub_status_module.c

Modified: trunk/src/core/ngx_connection.c
===================================================================
--- trunk/src/core/ngx_connection.c 2013-03-15 19:49:54 UTC (rev 5115)
+++ trunk/src/core/ngx_connection.c 2013-03-15 20:00:49 UTC (rev 5116)
@@ -970,6 +970,10 @@

if (c->reusable) {
ngx_queue_remove(&c->queue);
+
+#if (NGX_STAT_STUB)
+ (void) ngx_atomic_fetch_add(ngx_stat_waiting, -1);
+#endif
}

c->reusable = reusable;
@@ -979,6 +983,10 @@

ngx_queue_insert_head(
(ngx_queue_t *) &ngx_cycle->reusable_connections_queue, &c->queue);
+
+#if (NGX_STAT_STUB)
+ (void) ngx_atomic_fetch_add(ngx_stat_waiting, 1);
+#endif
}
}


Modified: trunk/src/event/ngx_event.c
===================================================================
--- trunk/src/event/ngx_event.c 2013-03-15 19:49:54 UTC (rev 5115)
+++ trunk/src/event/ngx_event.c 2013-03-15 20:00:49 UTC (rev 5116)
@@ -73,6 +73,8 @@
ngx_atomic_t *ngx_stat_reading = &ngx_stat_reading0;
ngx_atomic_t ngx_stat_writing0;
ngx_atomic_t *ngx_stat_writing = &ngx_stat_writing0;
+ngx_atomic_t ngx_stat_waiting0;
+ngx_atomic_t *ngx_stat_waiting = &ngx_stat_waiting0;

#endif

@@ -511,7 +513,8 @@
+ cl /* ngx_stat_requests */
+ cl /* ngx_stat_active */
+ cl /* ngx_stat_reading */
- + cl; /* ngx_stat_writing */
+ + cl /* ngx_stat_writing */
+ + cl; /* ngx_stat_waiting */

#endif

@@ -558,6 +561,7 @@
ngx_stat_active = (ngx_atomic_t *) (shared + 6 * cl);
ngx_stat_reading = (ngx_atomic_t *) (shared + 7 * cl);
ngx_stat_writing = (ngx_atomic_t *) (shared + 8 * cl);
+ ngx_stat_waiting = (ngx_atomic_t *) (shared + 9 * cl);

#endif


Modified: trunk/src/event/ngx_event.h
===================================================================
--- trunk/src/event/ngx_event.h 2013-03-15 19:49:54 UTC (rev 5115)
+++ trunk/src/event/ngx_event.h 2013-03-15 20:00:49 UTC (rev 5116)
@@ -511,6 +511,7 @@
extern ngx_atomic_t *ngx_stat_active;
extern ngx_atomic_t *ngx_stat_reading;
extern ngx_atomic_t *ngx_stat_writing;
+extern ngx_atomic_t *ngx_stat_waiting;

#endif


Modified: trunk/src/http/modules/ngx_http_stub_status_module.c
===================================================================
--- trunk/src/http/modules/ngx_http_stub_status_module.c 2013-03-15 19:49:54 UTC (rev 5115)
+++ trunk/src/http/modules/ngx_http_stub_status_module.c 2013-03-15 20:00:49 UTC (rev 5116)
@@ -73,6 +73,9 @@
{ ngx_string("connections_writing"), NULL, ngx_http_stub_status_variable,
2, NGX_HTTP_VAR_NOCACHEABLE, 0 },

+ { ngx_string("connections_waiting"), NULL, ngx_http_stub_status_variable,
+ 3, NGX_HTTP_VAR_NOCACHEABLE, 0 },
+
{ ngx_null_string, NULL, NULL, 0, 0, 0 }
};

@@ -83,7 +86,7 @@
ngx_int_t rc;
ngx_buf_t *b;
ngx_chain_t out;
- ngx_atomic_int_t ap, hn, ac, rq, rd, wr;
+ ngx_atomic_int_t ap, hn, ac, rq, rd, wr, wa;

if (r->method != NGX_HTTP_GET && r->method != NGX_HTTP_HEAD) {
return NGX_HTTP_NOT_ALLOWED;
@@ -126,6 +129,7 @@
rq = *ngx_stat_requests;
rd = *ngx_stat_reading;
wr = *ngx_stat_writing;
+ wa = *ngx_stat_waiting;

b->last = ngx_sprintf(b->last, "Active connections: %uA \n", ac);

@@ -135,7 +139,7 @@
b->last = ngx_sprintf(b->last, " %uA %uA %uA \n", ap, hn, rq);

b->last = ngx_sprintf(b->last, "Reading: %uA Writing: %uA Waiting: %uA \n",
- rd, wr, ac - (rd + wr));
+ rd, wr, wa);

r->headers_out.status = NGX_HTTP_OK;
r->headers_out.content_length_n = b->last - b->pos;
@@ -177,6 +181,10 @@
value = *ngx_stat_writing;
break;

+ case 3:
+ value = *ngx_stat_waiting;
+ break;
+
/* suppress warning */
default:
value = 0;

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] svn commit: r5116 - in trunk/src: core event http/modules

Anonymous User 687 March 15, 2013 04:02PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 275
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready