Author: rjung
Date: Thu Sep 22 22:03:35 2011
New Revision: 1174411

URL: http://svn.apache.org/viewvc?rev=1174411&view=rev
Log:
Add counter for created sessions to status worker
and HTTPD notes. It actually counts the number of
requests that do not carry a session id.
Only available when using a load balancer worker.

Modified:
    tomcat/jk/trunk/native/common/jk_lb_worker.c
    tomcat/jk/trunk/native/common/jk_lb_worker.h
    tomcat/jk/trunk/native/common/jk_shm.h
    tomcat/jk/trunk/native/common/jk_status.c
    tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml
    tomcat/jk/trunk/xdocs/reference/apache.xml

Modified: tomcat/jk/trunk/native/common/jk_lb_worker.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.c?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.c (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.c Thu Sep 22 22:03:35 2011
@@ -93,6 +93,7 @@ static const char *lb_first_log_names[] 
     JK_NOTE_LB_FIRST_NAME,
     JK_NOTE_LB_FIRST_VALUE,
     JK_NOTE_LB_FIRST_ACCESSED,
+    JK_NOTE_LB_FIRST_SESSIONS,
     JK_NOTE_LB_FIRST_READ,
     JK_NOTE_LB_FIRST_TRANSFERRED,
     JK_NOTE_LB_FIRST_ERRORS,
@@ -106,6 +107,7 @@ static const char *lb_last_log_names[] =
     JK_NOTE_LB_LAST_NAME,
     JK_NOTE_LB_LAST_VALUE,
     JK_NOTE_LB_LAST_ACCESSED,
+    JK_NOTE_LB_LAST_SESSIONS,
     JK_NOTE_LB_LAST_READ,
     JK_NOTE_LB_LAST_TRANSFERRED,
     JK_NOTE_LB_LAST_ERRORS,
@@ -1042,25 +1044,29 @@ static void lb_add_log_items(jk_ws_servi
         /* JK_NOTE_LB_FIRST/LAST_ACCESSED */
         log_values[2] = buf;
         buf += JK_LB_UINT64_STR_SZ;
+        snprintf(buf, JK_LB_UINT64_STR_SZ, "%" JK_UINT64_T_FMT, 
w->s->sessions);
+        /* JK_NOTE_LB_FIRST/LAST_SESSIONS */
+        log_values[3] = buf;
+        buf += JK_LB_UINT64_STR_SZ;
         snprintf(buf, JK_LB_UINT64_STR_SZ, "%" JK_UINT64_T_FMT, aw->s->readed);
         /* JK_NOTE_LB_FIRST/LAST_READ */
-        log_values[3] = buf;
+        log_values[4] = buf;
         buf += JK_LB_UINT64_STR_SZ;
         snprintf(buf, JK_LB_UINT64_STR_SZ, "%" JK_UINT64_T_FMT, 
aw->s->transferred);
         /* JK_NOTE_LB_FIRST/LAST_TRANSFERRED */
-        log_values[4] = buf;
+        log_values[5] = buf;
         buf += JK_LB_UINT64_STR_SZ;
         snprintf(buf, JK_LB_UINT64_STR_SZ, "%" JK_UINT32_T_FMT, w->s->errors);
         /* JK_NOTE_LB_FIRST/LAST_ERRORS */
-        log_values[5] = buf;
+        log_values[6] = buf;
         buf += JK_LB_UINT64_STR_SZ;
         snprintf(buf, JK_LB_UINT64_STR_SZ, "%d", aw->s->busy);
         /* JK_NOTE_LB_FIRST/LAST_BUSY */
-        log_values[6] = buf;
+        log_values[7] = buf;
         /* JK_NOTE_LB_FIRST/LAST_ACTIVATION */
-        log_values[7] = jk_lb_get_activation(w, l);
+        log_values[8] = jk_lb_get_activation(w, l);
         /* JK_NOTE_LB_FIRST/LAST_STATE */
-        log_values[8] = jk_lb_get_state(w, l);
+        log_values[9] = jk_lb_get_state(w, l);
         s->add_log_items(s, log_names, log_values, JK_LB_NOTES_COUNT);
     }
 }
@@ -1240,6 +1246,9 @@ static int JK_METHOD service(jk_endpoint
                      (p->worker->lbmethod == JK_LB_METHOD_SESSIONS ||
                       p->worker->lbmethod == JK_LB_METHOD_NEXT)))
                     rec->s->lb_value += rec->lb_mult;
+                if (!sessionid) {
+                    rec->s->sessions++;
+                }
                 if (p->worker->lblock == JK_LB_LOCK_PESSIMISTIC)
                     jk_shm_unlock();
 
@@ -1604,6 +1613,8 @@ static int JK_METHOD validate(jk_worker_
                 p->lb_workers[i].s->lb_value = 0;
                 p->lb_workers[i].s->state = JK_LB_STATE_IDLE;
                 p->lb_workers[i].s->error_time = 0;
+                p->lb_workers[i].s->elected_snapshot = 0;
+                p->lb_workers[i].s->sessions = 0;
                 p->lb_workers[i].activation =
                     jk_get_worker_activation(props, worker_names[i]);
                 if (!wc_create_worker(p->lb_workers[i].name, 0,

Modified: tomcat/jk/trunk/native/common/jk_lb_worker.h
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.h?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.h (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.h Thu Sep 22 22:03:35 2011
@@ -103,10 +103,11 @@ extern "C"
 #define JK_LB_ACTIVATION_TEXT_DEF      (JK_LB_ACTIVATION_TEXT_ACTIVE)
 
 #define JK_LB_UINT64_STR_SZ          (21)
-#define JK_LB_NOTES_COUNT            (9)
+#define JK_LB_NOTES_COUNT            (10)
 #define JK_NOTE_LB_FIRST_NAME        ("JK_LB_FIRST_NAME")
 #define JK_NOTE_LB_FIRST_VALUE       ("JK_LB_FIRST_VALUE")
 #define JK_NOTE_LB_FIRST_ACCESSED    ("JK_LB_FIRST_ACCESSED")
+#define JK_NOTE_LB_FIRST_SESSIONS    ("JK_LB_FIRST_SESSIONS")
 #define JK_NOTE_LB_FIRST_READ        ("JK_LB_FIRST_READ")
 #define JK_NOTE_LB_FIRST_TRANSFERRED ("JK_LB_FIRST_TRANSFERRED")
 #define JK_NOTE_LB_FIRST_ERRORS      ("JK_LB_FIRST_ERRORS")
@@ -116,6 +117,7 @@ extern "C"
 #define JK_NOTE_LB_LAST_NAME         ("JK_LB_LAST_NAME")
 #define JK_NOTE_LB_LAST_VALUE        ("JK_LB_LAST_VALUE")
 #define JK_NOTE_LB_LAST_ACCESSED     ("JK_LB_LAST_ACCESSED")
+#define JK_NOTE_LB_LAST_SESSIONS     ("JK_LB_LAST_SESSIONS")
 #define JK_NOTE_LB_LAST_READ         ("JK_LB_LAST_READ")
 #define JK_NOTE_LB_LAST_TRANSFERRED  ("JK_LB_LAST_TRANSFERRED")
 #define JK_NOTE_LB_LAST_ERRORS       ("JK_LB_LAST_ERRORS")

Modified: tomcat/jk/trunk/native/common/jk_shm.h
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_shm.h?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_shm.h (original)
+++ tomcat/jk/trunk/native/common/jk_shm.h Thu Sep 22 22:03:35 2011
@@ -151,6 +151,8 @@ struct jk_shm_lb_sub_worker
     volatile time_t error_time;
     /* Number of times the worker was elected - snapshot during maintenance */
     volatile jk_uint64_t  elected_snapshot;
+    /* Number of non-sticky requests handled, that were not marked as 
stateless */
+    volatile jk_uint64_t  sessions;
     /* Number of non 200 responses */
     volatile jk_uint32_t  errors;
 };

Modified: tomcat/jk/trunk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_status.c (original)
+++ tomcat/jk/trunk/native/common/jk_status.c Thu Sep 22 22:03:35 2011
@@ -306,7 +306,7 @@
                                            "<th>&nbsp;</th><th>Name</th>" \
                                            "<th>Act</th><th>State</th>" \
                                            "<th>D</th><th>F</th><th>M</th>" \
-                                           "<th>V</th><th>Acc</th>" \
+                                           
"<th>V</th><th>Acc</th><th>Sess</th>" \
                                            
"<th>Err</th><th>CE</th><th>RE</th>" \
                                            
"<th>Wr</th><th>Rd</th><th>Busy</th><th>Max</th><th>Con</th>" \
                                            "<th>" JK_STATUS_ARG_LBM_TEXT_ROUTE 
"</th>" \
@@ -320,6 +320,7 @@
                                            "<td>%" JK_UINT64_T_FMT "</td>" \
                                            "<td>%" JK_UINT64_T_FMT "</td>" \
                                            "<td>%" JK_UINT64_T_FMT " 
(%d/sec)</td>" \
+                                           "<td>%" JK_UINT64_T_FMT " 
(%d/sec)</td>" \
                                            "<td>%" JK_UINT32_T_FMT "</td>" \
                                            "<td>%" JK_UINT32_T_FMT "</td>" \
                                            "<td>%" JK_UINT32_T_FMT "</td>" \
@@ -1831,6 +1832,8 @@ static void display_worker_ajp_details(j
                       wr->s->lb_value,
                       aw->s->used,
                       delta_reset > 0 ? (int)(aw->s->used / delta_reset) : -1,
+                      wr->s->sessions,
+                      delta_reset > 0 ? (int)(wr->s->sessions / delta_reset) : 
-1,
                       wr->s->errors,
                       aw->s->client_errors,
                       aw->s->reply_timeouts,
@@ -1906,6 +1909,7 @@ static void display_worker_ajp_details(j
             jk_print_xml_att_uint64(s, off+2, "lbmult", wr->lb_mult);
             jk_print_xml_att_uint64(s, off+2, "lbvalue", wr->s->lb_value);
             jk_print_xml_att_uint64(s, off+2, "elected", aw->s->used);
+            jk_print_xml_att_uint64(s, off+2, "sessions", wr->s->sessions);
             jk_print_xml_att_uint32(s, off+2, "errors", wr->s->errors);
         }
         else {
@@ -1972,6 +1976,7 @@ static void display_worker_ajp_details(j
             jk_printf(s, " lbmult=%" JK_UINT64_T_FMT, wr->lb_mult);
             jk_printf(s, " lbvalue=%" JK_UINT64_T_FMT, wr->s->lb_value);
             jk_printf(s, " elected=%" JK_UINT64_T_FMT, aw->s->used);
+            jk_printf(s, " sessions=%" JK_UINT64_T_FMT, wr->s->sessions);
             jk_printf(s, " errors=%" JK_UINT32_T_FMT, wr->s->errors);
         }
         else {
@@ -2035,6 +2040,7 @@ static void display_worker_ajp_details(j
             jk_print_prop_att_uint64(s, w, ajp_name, "lbmult", wr->lb_mult);
             jk_print_prop_att_uint64(s, w, ajp_name, "lbvalue", 
wr->s->lb_value);
             jk_print_prop_att_uint64(s, w, ajp_name, "elected", aw->s->used);
+            jk_print_prop_att_uint64(s, w, ajp_name, "sessions", 
wr->s->sessions);
             jk_print_prop_att_uint32(s, w, ajp_name, "errors", wr->s->errors);
         }
         else {
@@ -3700,6 +3706,7 @@ static void display_legend(jk_ws_service
             "<tr><th>M</th><td>Load Balancer multiplicity</td></tr>\n"
             "<tr><th>V</th><td>Load Balancer value</td></tr>\n"
             "<tr><th>Acc</th><td>Number of requests</td></tr>\n"
+            "<tr><th>Sess</th><td>Number of sessions created</td></tr>\n"
             "<tr><th>Err</th><td>Number of failed requests</td></tr>\n"
             "<tr><th>CE</th><td>Number of client errors</td></tr>\n"
             "<tr><th>RE</th><td>Number of reply timeouts (decayed)</td></tr>\n"
@@ -4273,6 +4280,7 @@ static int reset_worker(jk_ws_service_t 
                 aw = (ajp_worker_t *)wr->worker->worker_private;
                 wr->s->state            = JK_LB_STATE_IDLE;
                 wr->s->elected_snapshot = 0;
+                wr->s->sessions         = 0;
                 wr->s->error_time       = 0;
                 wr->s->errors           = 0;
                 wr->s->lb_value         = 0;
@@ -4300,6 +4308,7 @@ static int reset_worker(jk_ws_service_t 
             aw = (ajp_worker_t *)wr->worker->worker_private;
             wr->s->state            = JK_LB_STATE_IDLE;
             wr->s->elected_snapshot = 0;
+            wr->s->sessions         = 0;
             wr->s->error_time       = 0;
             wr->s->errors           = 0;
             wr->s->lb_value         = 0;

Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Thu Sep 22 22:03:35 2011
@@ -57,6 +57,11 @@
         LB: New balancing method "Next" to distribute sessions in a round-robin
         way. (rjung)
       </add>
+      <add>
+        LB: Add counter for created sessions to status worker and HTTPD notes.
+        It actually counts the number of requests that do not carry a session 
id.
+        (rjung)
+      </add>
     </changelog>
   </subsection>
 </section>

Modified: tomcat/jk/trunk/xdocs/reference/apache.xml
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/reference/apache.xml?rev=1174411&r1=1174410&r2=1174411&view=diff
==============================================================================
--- tomcat/jk/trunk/xdocs/reference/apache.xml (original)
+++ tomcat/jk/trunk/xdocs/reference/apache.xml Thu Sep 22 22:03:35 2011
@@ -599,6 +599,7 @@ Most of them are are only useful in comb
   <attribute name="JK_LB_FIRST_NAME" required="false">Load-Balancer: Name of 
the first worker tried</attribute>
   <attribute name="JK_LB_FIRST_TYPE" required="false">Load-Balancer: Type of 
the first worker tried</attribute>
   <attribute name="JK_LB_FIRST_ACCESSED" required="false">Load-Balancer: 
Access count for the first worker tried</attribute>
+  <attribute name="JK_LB_FIRST_SESSIONS" required="false">Load-Balancer: Count 
of created sessions for the first worker tried</attribute>
   <attribute name="JK_LB_FIRST_READ" required="false">Load-Balancer: Bytes 
read for the first worker tried</attribute>
   <attribute name="JK_LB_FIRST_TRANSFERRED" required="false">Load-Balancer: 
Bytes transferred for the first worker tried</attribute>
   <attribute name="JK_LB_FIRST_ERRORS" required="false">Load-Balancer: Error 
count for the first worker tried</attribute>
@@ -608,6 +609,7 @@ Most of them are are only useful in comb
   <attribute name="JK_LB_LAST_NAME" required="false">Load-Balancer: Name of 
the last worker tried</attribute>
   <attribute name="JK_LB_LAST_TYPE" required="false">Load-Balancer: Type of 
the last worker tried</attribute>
   <attribute name="JK_LB_LAST_ACCESSED" required="false">Load-Balancer: Access 
count for the last worker tried</attribute>
+  <attribute name="JK_LB_LAST_SESSIONS" required="false">Load-Balancer: Count 
of created sessions for the last worker tried</attribute>
   <attribute name="JK_LB_LAST_READ" required="false">Load-Balancer: Bytes read 
for the last worker tried</attribute>
   <attribute name="JK_LB_LAST_TRANSFERRED" required="false">Load-Balancer: 
Bytes transferred for the last worker tried</attribute>
   <attribute name="JK_LB_LAST_ERRORS" required="false">Load-Balancer: Error 
count for the last worker tried</attribute>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to