]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] maintain the number of sessions per server and add this info to the logs
authorwilly tarreau <willy@wtap.(none)>
Sat, 15 Apr 2006 20:45:52 +0000 (22:45 +0200)
committerwilly tarreau <willy@wtap.(none)>
Sat, 15 Apr 2006 20:45:52 +0000 (22:45 +0200)
haproxy.c

index 14f68a80b6f2d750f3ab262884c6c95ab13b9feb..0f0e1813b0483b3e5b098cf6b68a72cebfe80608 100644 (file)
--- a/haproxy.c
+++ b/haproxy.c
@@ -513,6 +513,8 @@ struct server {
     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 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 */
 };
 
@@ -2124,6 +2126,7 @@ int connect_server(struct session *s) {
 #endif
     
     fd_insert(fd);
+    s->srv->cur_sess++;
 
     if (s->proxy->contimeout)
        tv_delayfrom(&s->cnexpire, &now, s->proxy->contimeout);
@@ -2644,7 +2647,7 @@ void sess_log(struct session *s) {
        }
        *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,
                 (s->cli_addr.ss_family == AF_INET) ?
                   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],
                 (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->nbconn, actconn, tmpline);
+                s->srv ? s->srv->cur_sess : 0, p->nbconn, actconn, tmpline);
     }
     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,
                 (s->cli_addr.ss_family == AF_INET) ?
                   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,
                 sess_term_cond[(s->flags & SN_ERR_MASK) >> SN_ERR_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;
@@ -4263,6 +4266,7 @@ int process_srv(struct session *t) {
            /* timeout,  connect error or first write error */
            //FD_CLR(t->srv_fd, StaticWriteEvent);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->conn_retries--;
            if (t->conn_retries >= 0) {
@@ -4368,6 +4372,7 @@ int process_srv(struct session *t) {
                        tv_eternity(&t->srexpire);
                        tv_eternity(&t->swexpire);
                        fd_delete(t->srv_fd);
+                       t->srv->cur_sess--;
                        t->srv_state = SV_STCLOSE;
                        t->logs.status = 502;
                        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->swexpire);
                    fd_delete(t->srv_fd);
+                   t->srv->cur_sess--;
                    t->srv_state = SV_STCLOSE;
                    t->logs.status = 502;
                    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->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            t->srv_state = SV_STCLOSE;
            t->logs.status = 502;
            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->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            t->srv_state = SV_STCLOSE;
            t->logs.status = 504;
            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->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            t->srv_state = SV_STCLOSE;
            if (!(t->flags & SN_ERR_MASK))
                t->flags |= SN_ERR_SRVCL;
@@ -5044,6 +5053,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticWriteEvent);
            tv_eternity(&t->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            if (!(t->flags & SN_ERR_MASK))
@@ -5056,6 +5066,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticWriteEvent);
            tv_eternity(&t->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            return 1;
@@ -5064,6 +5075,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticWriteEvent);
            tv_eternity(&t->swexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            if (!(t->flags & SN_ERR_MASK))
@@ -5097,6 +5109,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticReadEvent);
            tv_eternity(&t->srexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            if (!(t->flags & SN_ERR_MASK))
@@ -5109,6 +5122,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticReadEvent);
            tv_eternity(&t->srexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            return 1;
@@ -5117,6 +5131,7 @@ int process_srv(struct session *t) {
            //FD_CLR(t->srv_fd, StaticReadEvent);
            tv_eternity(&t->srexpire);
            fd_delete(t->srv_fd);
+           t->srv->cur_sess--;
            //close(t->srv_fd);
            t->srv_state = SV_STCLOSE;
            if (!(t->flags & SN_ERR_MASK))