[MINOR] maintain the number of sessions per server and add this info to the logs
This commit is contained in:
parent
a4197319b4
commit
a647c7051e
23
haproxy.c
23
haproxy.c
|
@ -513,6 +513,8 @@ struct server {
|
||||||
int curfd; /* file desc used for current test, or -1 if not in test */
|
int curfd; /* file desc used for current test, or -1 if not in test */
|
||||||
unsigned char uweight, eweight; /* user-specified weight-1, and effective weight-1 */
|
unsigned char uweight, eweight; /* user-specified weight-1, and effective weight-1 */
|
||||||
unsigned int wscore; /* weight score, used during srv map computation */
|
unsigned int wscore; /* weight score, used during srv map computation */
|
||||||
|
int cur_sess; /* number of currently active sessions (including syn_sent) */
|
||||||
|
unsigned int cum_sess; /* cumulated number of sessions really sent to this server */
|
||||||
struct proxy *proxy; /* the proxy this server belongs to */
|
struct proxy *proxy; /* the proxy this server belongs to */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2124,6 +2126,7 @@ int connect_server(struct session *s) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fd_insert(fd);
|
fd_insert(fd);
|
||||||
|
s->srv->cur_sess++;
|
||||||
|
|
||||||
if (s->proxy->contimeout)
|
if (s->proxy->contimeout)
|
||||||
tv_delayfrom(&s->cnexpire, &now, s->proxy->contimeout);
|
tv_delayfrom(&s->cnexpire, &now, s->proxy->contimeout);
|
||||||
|
@ -2644,7 +2647,7 @@ void sess_log(struct session *s) {
|
||||||
}
|
}
|
||||||
*h = '\0';
|
*h = '\0';
|
||||||
|
|
||||||
send_log(p, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d] %s %s %d/%d/%d/%s%d %d %s%lld %s %s %c%c%c%c %d/%d%s\n",
|
send_log(p, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d] %s %s %d/%d/%d/%s%d %d %s%lld %s %s %c%c%c%c %d/%d/%d%s\n",
|
||||||
pn,
|
pn,
|
||||||
(s->cli_addr.ss_family == AF_INET) ?
|
(s->cli_addr.ss_family == AF_INET) ?
|
||||||
ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
|
ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
|
||||||
|
@ -2664,10 +2667,10 @@ void sess_log(struct session *s) {
|
||||||
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
||||||
(p->options & PR_O_COOK_ANY) ? sess_cookie[(s->flags & SN_CK_MASK) >> SN_CK_SHIFT] : '-',
|
(p->options & PR_O_COOK_ANY) ? sess_cookie[(s->flags & SN_CK_MASK) >> SN_CK_SHIFT] : '-',
|
||||||
(p->options & PR_O_COOK_ANY) ? sess_set_cookie[(s->flags & SN_SCK_MASK) >> SN_SCK_SHIFT] : '-',
|
(p->options & PR_O_COOK_ANY) ? sess_set_cookie[(s->flags & SN_SCK_MASK) >> SN_SCK_SHIFT] : '-',
|
||||||
p->nbconn, actconn, tmpline);
|
s->srv ? s->srv->cur_sess : 0, p->nbconn, actconn, tmpline);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
send_log(p, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d] %s %s %d/%s%d %s%lld %c%c %d/%d\n",
|
send_log(p, LOG_INFO, "%s:%d [%02d/%s/%04d:%02d:%02d:%02d] %s %s %d/%s%d %s%lld %c%c %d/%d/%d\n",
|
||||||
pn,
|
pn,
|
||||||
(s->cli_addr.ss_family == AF_INET) ?
|
(s->cli_addr.ss_family == AF_INET) ?
|
||||||
ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
|
ntohs(((struct sockaddr_in *)&s->cli_addr)->sin_port) :
|
||||||
|
@ -2680,7 +2683,7 @@ void sess_log(struct session *s) {
|
||||||
(p->to_log & LW_BYTES) ? "" : "+", s->logs.bytes,
|
(p->to_log & LW_BYTES) ? "" : "+", s->logs.bytes,
|
||||||
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_SHIFT],
|
||||||
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
sess_fin_state[(s->flags & SN_FINST_MASK) >> SN_FINST_SHIFT],
|
||||||
p->nbconn, actconn);
|
s->srv ? s->srv->cur_sess : 0, p->nbconn, actconn);
|
||||||
}
|
}
|
||||||
|
|
||||||
s->logs.logwait = 0;
|
s->logs.logwait = 0;
|
||||||
|
@ -4263,6 +4266,7 @@ int process_srv(struct session *t) {
|
||||||
/* timeout, connect error or first write error */
|
/* timeout, connect error or first write error */
|
||||||
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->conn_retries--;
|
t->conn_retries--;
|
||||||
if (t->conn_retries >= 0) {
|
if (t->conn_retries >= 0) {
|
||||||
|
@ -4368,6 +4372,7 @@ int process_srv(struct session *t) {
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
t->logs.status = 502;
|
t->logs.status = 502;
|
||||||
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
||||||
|
@ -4388,6 +4393,7 @@ int process_srv(struct session *t) {
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
t->logs.status = 502;
|
t->logs.status = 502;
|
||||||
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
||||||
|
@ -4819,6 +4825,7 @@ int process_srv(struct session *t) {
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
t->logs.status = 502;
|
t->logs.status = 502;
|
||||||
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
client_return(t, t->proxy->errmsg.len502, t->proxy->errmsg.msg502);
|
||||||
|
@ -4846,6 +4853,7 @@ int process_srv(struct session *t) {
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
t->logs.status = 504;
|
t->logs.status = 504;
|
||||||
client_return(t, t->proxy->errmsg.len504, t->proxy->errmsg.msg504);
|
client_return(t, t->proxy->errmsg.len504, t->proxy->errmsg.msg504);
|
||||||
|
@ -4940,6 +4948,7 @@ int process_srv(struct session *t) {
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
if (!(t->flags & SN_ERR_MASK))
|
if (!(t->flags & SN_ERR_MASK))
|
||||||
t->flags |= SN_ERR_SRVCL;
|
t->flags |= SN_ERR_SRVCL;
|
||||||
|
@ -5044,6 +5053,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
if (!(t->flags & SN_ERR_MASK))
|
if (!(t->flags & SN_ERR_MASK))
|
||||||
|
@ -5056,6 +5066,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -5064,6 +5075,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
//FD_CLR(t->srv_fd, StaticWriteEvent);
|
||||||
tv_eternity(&t->swexpire);
|
tv_eternity(&t->swexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
if (!(t->flags & SN_ERR_MASK))
|
if (!(t->flags & SN_ERR_MASK))
|
||||||
|
@ -5097,6 +5109,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticReadEvent);
|
//FD_CLR(t->srv_fd, StaticReadEvent);
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
if (!(t->flags & SN_ERR_MASK))
|
if (!(t->flags & SN_ERR_MASK))
|
||||||
|
@ -5109,6 +5122,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticReadEvent);
|
//FD_CLR(t->srv_fd, StaticReadEvent);
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -5117,6 +5131,7 @@ int process_srv(struct session *t) {
|
||||||
//FD_CLR(t->srv_fd, StaticReadEvent);
|
//FD_CLR(t->srv_fd, StaticReadEvent);
|
||||||
tv_eternity(&t->srexpire);
|
tv_eternity(&t->srexpire);
|
||||||
fd_delete(t->srv_fd);
|
fd_delete(t->srv_fd);
|
||||||
|
t->srv->cur_sess--;
|
||||||
//close(t->srv_fd);
|
//close(t->srv_fd);
|
||||||
t->srv_state = SV_STCLOSE;
|
t->srv_state = SV_STCLOSE;
|
||||||
if (!(t->flags & SN_ERR_MASK))
|
if (!(t->flags & SN_ERR_MASK))
|
||||||
|
|
Loading…
Reference in New Issue