mirror of
https://github.com/nginx/nginx.git
synced 2026-06-27 12:21:57 +00:00
Allow to reuse connections that wait their first request.
This should improve behavior under deficiency of connections. Since SSL handshake usually takes significant amount of time, we exclude connections from reusable queue during this period to avoid premature flush of them.
This commit is contained in:
parent
3f70ddcfc6
commit
23e692b58d
1 changed files with 19 additions and 0 deletions
|
|
@ -355,6 +355,7 @@ ngx_http_init_connection(ngx_connection_t *c)
|
|||
}
|
||||
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
ngx_http_close_connection(c);
|
||||
|
|
@ -383,6 +384,11 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
|||
return;
|
||||
}
|
||||
|
||||
if (c->close) {
|
||||
ngx_http_close_connection(c);
|
||||
return;
|
||||
}
|
||||
|
||||
hc = c->data;
|
||||
cscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_core_module);
|
||||
|
||||
|
|
@ -432,6 +438,7 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
|||
|
||||
if (!rev->timer_set) {
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
}
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
|
|
@ -466,6 +473,8 @@ ngx_http_wait_request_handler(ngx_event_t *rev)
|
|||
|
||||
c->log->action = "reading client request line";
|
||||
|
||||
ngx_reusable_connection(c, 0);
|
||||
|
||||
c->data = ngx_http_create_request(c);
|
||||
if (c->data == NULL) {
|
||||
ngx_http_close_connection(c);
|
||||
|
|
@ -611,6 +620,11 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
|||
return;
|
||||
}
|
||||
|
||||
if (c->close) {
|
||||
ngx_http_close_connection(c);
|
||||
return;
|
||||
}
|
||||
|
||||
n = recv(c->fd, (char *) buf, 1, MSG_PEEK);
|
||||
|
||||
err = ngx_socket_errno;
|
||||
|
|
@ -631,6 +645,7 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
|||
|
||||
if (!rev->timer_set) {
|
||||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
ngx_reusable_connection(c, 1);
|
||||
}
|
||||
|
||||
if (ngx_handle_read_event(rev, 0) != NGX_OK) {
|
||||
|
|
@ -670,6 +685,8 @@ ngx_http_ssl_handshake(ngx_event_t *rev)
|
|||
ngx_add_timer(rev, c->listening->post_accept_timeout);
|
||||
}
|
||||
|
||||
ngx_reusable_connection(c, 0);
|
||||
|
||||
c->ssl->handler = ngx_http_ssl_handshake_handler;
|
||||
return;
|
||||
}
|
||||
|
|
@ -714,6 +731,8 @@ ngx_http_ssl_handshake_handler(ngx_connection_t *c)
|
|||
c->read->handler = ngx_http_wait_request_handler;
|
||||
/* STUB: epoll edge */ c->write->handler = ngx_http_empty_handler;
|
||||
|
||||
ngx_reusable_connection(c, 1);
|
||||
|
||||
ngx_http_wait_request_handler(c->read);
|
||||
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue