You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2008/01/13 18:01:09 UTC
svn commit: r611595 - in /tomcat/connectors/trunk/jk/native/common:
jk_lb_worker.c jk_lb_worker.h jk_shm.c jk_shm.h
Author: rjung
Date: Sun Jan 13 09:01:08 2008
New Revision: 611595
URL: http://svn.apache.org/viewvc?rev=611595&view=rev
Log:
Differentiate between ajp shm workers and lb sub
shm workers part 1:
- introduce new shm worker and rename existing one.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
tomcat/connectors/trunk/jk/native/common/jk_shm.c
tomcat/connectors/trunk/jk/native/common/jk_shm.h
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=611595&r1=611594&r2=611595&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Sun Jan 13 09:01:08 2008
@@ -1353,7 +1353,7 @@
}
for (i = 0; i < num_of_workers; i++) {
- p->lb_workers[i].s = jk_shm_alloc_ajp13_worker(&p->p);
+ p->lb_workers[i].s = jk_shm_alloc_lb_sub_worker(&p->p);
if (p->lb_workers[i].s == NULL) {
jk_log(l, JK_LOG_ERROR,
"allocating ajp13 worker record from shared memory");
Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h?rev=611595&r1=611594&r2=611595&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.h Sun Jan 13 09:01:08 2008
@@ -37,6 +37,7 @@
#define JK_LB_WORKER_NAME ("lb")
#define JK_LB_WORKER_TYPE (5)
+#define JK_LB_SUB_WORKER_TYPE (7)
#define JK_LB_DEF_DOMAIN_NAME ("unknown")
#define JK_LB_METHOD_REQUESTS (0)
@@ -122,7 +123,7 @@
{
jk_worker_t *w;
/* Shared memory worker data */
- jk_shm_ajp13_worker_t *s;
+ jk_shm_lb_sub_worker_t *s;
char name[JK_SHM_STR_SIZ+1];
/* route */
char route[JK_SHM_STR_SIZ+1];
Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.c?rev=611595&r1=611594&r2=611595&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_shm.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_shm.c Sun Jan 13 09:01:08 2008
@@ -28,6 +28,7 @@
#include "jk_mt.h"
#include "jk_lb_worker.h"
#include "jk_ajp13_worker.h"
+#include "jk_ajp14_worker.h"
#include "jk_shm.h"
/** jk shm header core data structure */
@@ -60,7 +61,8 @@
struct jk_shm
{
size_t size;
- unsigned ajp13_workers;
+ unsigned ajp_workers;
+ unsigned lb_sub_workers;
unsigned lb_workers;
char *filename;
char *lockname;
@@ -74,7 +76,7 @@
typedef struct jk_shm jk_shm_t;
static const char shm_signature[] = { JK_SHM_MAGIC };
-static jk_shm_t jk_shmem = { 0, 0, 0, NULL, NULL, -1, -1, 0, NULL};
+static jk_shm_t jk_shmem = { 0, 0, 0, 0, NULL, NULL, -1, -1, 0, NULL};
static time_t jk_workers_modified_time = 0;
static time_t jk_workers_access_time = 0;
#if defined (WIN32)
@@ -87,8 +89,9 @@
char **worker_list;
unsigned i;
unsigned num_of_workers;
+ int num_of_ajp_workers = 0;
+ int num_of_lb_sub_workers = 0;
int num_of_lb_workers = 0;
- int num_of_ajp13_workers = 0;
JK_TRACE_ENTER(l);
@@ -103,7 +106,11 @@
for (i = 0; i < num_of_workers; i++) {
const char *type = jk_get_worker_type(init_data, worker_list[i]);
- if (!strcmp(type, JK_LB_WORKER_NAME)) {
+ if (!strcmp(type, JK_AJP13_WORKER_NAME) ||
+ !strcmp(type, JK_AJP14_WORKER_NAME)) {
+ num_of_ajp_workers++;
+ }
+ else if (!strcmp(type, JK_LB_WORKER_NAME)) {
char **member_list;
unsigned num_of_members;
num_of_lb_workers++;
@@ -116,17 +123,23 @@
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG, "worker %s of type %s has %u members",
worker_list[i], JK_LB_WORKER_NAME, num_of_members);
- num_of_ajp13_workers += num_of_members;
+ num_of_lb_sub_workers += num_of_members;
}
}
}
if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG, "shared memory will contain %d lb workers with %d ajp13 members",
- num_of_lb_workers, num_of_ajp13_workers);
+ jk_log(l, JK_LOG_DEBUG, "shared memory will contain %d ajp workers of size %d and %d lb workers of size %d with %d members of size %d+%d",
+ num_of_ajp_workers, JK_SHM_AJP_SIZE(1),
+ num_of_lb_workers, JK_SHM_LB_SIZE(1),
+ num_of_lb_sub_workers, JK_SHM_LB_SUB_SIZE(1), JK_SHM_AJP_SIZE(1));
+ jk_shmem.ajp_workers = num_of_ajp_workers;
+ jk_shmem.lb_sub_workers = num_of_lb_sub_workers;
jk_shmem.lb_workers = num_of_lb_workers;
- jk_shmem.ajp13_workers = num_of_ajp13_workers;
JK_TRACE_EXIT(l);
- return JK_SHM_LB_SIZE(jk_shmem.lb_workers) + JK_SHM_AJP13_SIZE(jk_shmem.ajp13_workers);
+ return JK_SHM_AJP_SIZE(jk_shmem.ajp_workers) +
+ JK_SHM_LB_SUB_SIZE(jk_shmem.lb_sub_workers) +
+ JK_SHM_AJP_SIZE(jk_shmem.lb_sub_workers) +
+ JK_SHM_LB_SIZE(jk_shmem.lb_workers);
}
@@ -710,15 +723,31 @@
return rc;
}
-jk_shm_ajp13_worker_t *jk_shm_alloc_ajp13_worker(jk_pool_t *p)
+jk_shm_ajp_worker_t *jk_shm_alloc_ajp_worker(jk_pool_t *p)
{
- jk_shm_ajp13_worker_t *w = (jk_shm_ajp13_worker_t *)jk_shm_alloc(p, JK_SHM_AJP13_WORKER_SIZE);
+ jk_shm_ajp_worker_t *w = (jk_shm_ajp_worker_t *)jk_shm_alloc(p, JK_SHM_AJP_WORKER_SIZE);
if (w) {
- memset(w, 0, JK_SHM_AJP13_WORKER_SIZE);
+ memset(w, 0, JK_SHM_AJP_WORKER_SIZE);
if (jk_shmem.hdr) {
jk_shmem.hdr->h.data.workers++;
w->h.id = jk_shmem.hdr->h.data.workers;
w->h.type = JK_AJP13_WORKER_TYPE;
+ }
+ else
+ w->h.id = -1;
+ }
+ return w;
+}
+
+jk_shm_lb_sub_worker_t *jk_shm_alloc_lb_sub_worker(jk_pool_t *p)
+{
+ jk_shm_lb_sub_worker_t *w = (jk_shm_lb_sub_worker_t *)jk_shm_alloc(p, JK_SHM_LB_SUB_WORKER_SIZE);
+ if (w) {
+ memset(w, 0, JK_SHM_LB_SUB_WORKER_SIZE);
+ if (jk_shmem.hdr) {
+ jk_shmem.hdr->h.data.workers++;
+ w->h.id = jk_shmem.hdr->h.data.workers;
+ w->h.type = JK_LB_SUB_WORKER_TYPE;
}
else
w->h.id = -1;
Modified: tomcat/connectors/trunk/jk/native/common/jk_shm.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_shm.h?rev=611595&r1=611594&r2=611595&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_shm.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_shm.h Sun Jan 13 09:01:08 2008
@@ -49,14 +49,16 @@
#define JK_SHM_MAGIC_SIZ 8
/* Really huge numbers, but 64 workers should be enough */
-#define JK_SHM_MAX_WORKERS 64
-#define JK_SHM_ALIGNMENT 64
-#define JK_SHM_ALIGN(x) JK_ALIGN((x), JK_SHM_ALIGNMENT)
-#define JK_SHM_AJP13_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_ajp13_worker_t))
-#define JK_SHM_LB_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_lb_worker_t))
-#define JK_SHM_AJP13_SIZE(x) ((x) * JK_SHM_AJP13_WORKER_SIZE)
-#define JK_SHM_LB_SIZE(x) ((x) * JK_SHM_LB_WORKER_SIZE)
-#define JK_SHM_DEF_SIZE JK_SHM_AJP13_SIZE(JK_SHM_MAX_WORKERS)
+#define JK_SHM_MAX_WORKERS 64
+#define JK_SHM_ALIGNMENT 64
+#define JK_SHM_ALIGN(x) JK_ALIGN((x), JK_SHM_ALIGNMENT)
+#define JK_SHM_AJP_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_ajp_worker_t))
+#define JK_SHM_LB_SUB_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_lb_sub_worker_t))
+#define JK_SHM_LB_WORKER_SIZE JK_SHM_ALIGN(sizeof(jk_shm_lb_worker_t))
+#define JK_SHM_AJP_SIZE(x) ((x) * JK_SHM_AJP_WORKER_SIZE)
+#define JK_SHM_LB_SUB_SIZE(x) ((x) * JK_SHM_LB_SUB_WORKER_SIZE)
+#define JK_SHM_LB_SIZE(x) ((x) * JK_SHM_LB_WORKER_SIZE)
+#define JK_SHM_DEF_SIZE JK_SHM_AJP_SIZE(JK_SHM_MAX_WORKERS) + JK_SHM_LB_SUB_SIZE(JK_SHM_MAX_WORKERS) + JK_SHM_LB_SIZE(JK_SHM_MAX_WORKERS)
/** jk shm generic worker record structure */
struct jk_shm_worker_header
@@ -72,8 +74,39 @@
};
typedef struct jk_shm_worker_header jk_shm_worker_header_t;
-/** jk shm ajp13 worker record structure */
-struct jk_shm_ajp13_worker
+/** jk shm ajp13/ajp14 worker record structure */
+struct jk_shm_ajp_worker
+{
+ jk_shm_worker_header_t h;
+
+ /* current error state (runtime) of the worker */
+ volatile int state;
+ /* Statistical data */
+ /* Number of currently busy channels */
+ volatile int busy;
+ /* Maximum number of busy channels */
+ volatile int max_busy;
+ volatile time_t error_time;
+ /* Number of bytes read from remote */
+ volatile jk_uint64_t readed;
+ /* Number of bytes transferred to remote */
+ volatile jk_uint64_t transferred;
+ /* Number of times the worker was used */
+ volatile jk_uint64_t used;
+ /* Number of times the worker was used - snapshot during maintenance */
+ volatile jk_uint64_t used_snapshot;
+ /* Number of non 200 responses */
+ volatile jk_uint32_t errors;
+ /* Decayed number of reply_timeout errors */
+ volatile jk_uint32_t reply_timeouts;
+ /* Number of client errors */
+ volatile jk_uint32_t client_errors;
+ volatile time_t last_maintain_time;
+};
+typedef struct jk_shm_ajp_worker jk_shm_ajp_worker_t;
+
+/** jk shm lb sub worker record structure */
+struct jk_shm_lb_sub_worker
{
jk_shm_worker_header_t h;
@@ -116,7 +149,7 @@
/* Number of client errors */
volatile jk_uint32_t client_errors;
};
-typedef struct jk_shm_ajp13_worker jk_shm_ajp13_worker_t;
+typedef struct jk_shm_lb_sub_worker jk_shm_lb_sub_worker_t;
/** jk shm lb worker record structure */
struct jk_shm_lb_worker
@@ -134,7 +167,6 @@
int retries;
int lbmethod;
int lblock;
- /* Service transfer rate time */
volatile time_t last_maintain_time;
};
typedef struct jk_shm_lb_worker jk_shm_lb_worker_t;
@@ -162,10 +194,15 @@
*/
void *jk_shm_alloc(jk_pool_t *p, size_t size);
-/* allocate shm ajp13 worker record
+/* allocate shm ajp worker record
+ * If there is no shm present the pool will be used instead
+ */
+jk_shm_ajp_worker_t *jk_shm_alloc_ajp_worker(jk_pool_t *p);
+
+/* allocate shm lb sub worker record
* If there is no shm present the pool will be used instead
*/
-jk_shm_ajp13_worker_t *jk_shm_alloc_ajp13_worker(jk_pool_t *p);
+jk_shm_lb_sub_worker_t *jk_shm_alloc_lb_sub_worker(jk_pool_t *p);
/* allocate shm lb worker record
* If there is no shm present the pool will be used instead
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org