调整后的方案: 操作系统Windows2003 server版本) U# F' r2 p/ H, e1 P2 H* Z2 O
JDK1.4( \; X3 X# L( z( j0 a. L; h
Tomcat 5.0.30% F2 Q& j+ R4 Q
数据库连接池C3P09 A2 `& a3 }( e& |
仅采用负载平衡,不采用集群。0 j y4 q5 W. D, x9 v" O# a7 h! M1 j
软件的配置:
2 Y6 E9 o, z# n! G1 I7 {3 C Apache配置:主要配置httpd.conf和新增加的文件workers.properties" o9 E) b. F3 f0 d$ M% I; k. E
Httpd.conf:
; o d9 L6 r% A% n) [ #一个连接的最大请求数量
$ m! [8 @* d: ^: r3 x MaxKeepAliveRequests 100009 e5 ^) a; {* y+ E+ S) B
#NT环境,只能配置这个参数来提供性能; O9 j Y3 i# k" E( a9 Q3 S9 t9 Q- B
^2 v( W$ a+ W( N& x- L" p #每个进程的线程数,最大1920。NT只启动父子两个进程,不能设置启动多个进程
& I3 g$ D% e5 @3 o2 N M% C6 v ThreadsPerChild 1900 z" G' r& k, \9 k. u
每个子进程能够处理的最大请求数
! w, S( Q) n1 [5 P" c MaxRequestsPerChild 10000* p0 Y, `* J& h' p, C/ F" {
6 i) `1 ^3 @9 i) R1 ~; E # 加载mod_jk
$ G! ~7 M5 y% f8 \; }2 s; C+ J #
: T- R! E: K4 S" Y% A- K0 ^ LoadModule jk_module modules/mod_jk.so
/ u, i/ t6 f6 D1 F4 l #- d* x4 ~8 L8 k+ y9 g
# 配置mod_jk
2 S: @1 c: n$ L' q" ~" T #; L G! d1 B4 n0 Y4 p. p/ p2 f! O
JkWorkersFile conf/workers.properties
* G8 r" I. `# b( S5 S JkLogFile logs/mod_jk.log# q7 S) E" y# e) J8 n* g3 B$ K
JkLogLevel info/ k; V; [! M: z! |; o; v7 V
#请求分发,对jsp文件,.do等动态请求交由tomcat处理
1 p+ \9 Q$ T4 f: O6 P DocumentRoot "C:/Apache/htdocs"4 {" J' S1 O( G: G$ |' i7 c% K
JkMount /*.jsp loadbalancer: w2 s+ M/ W/ B1 f4 O( L$ Z
JkMount /*.do loadbalancer4 o6 `8 G: q9 W1 `6 @
JkMount /servlet/* loadbalancer( H% x' M5 r9 M" a1 }/ I
#关掉主机Lookup,如果为on,很影响性能,可以有10多秒钟的延迟。
& i9 l( r+ l' D HostnameLookups Off#缓存配置" _% {1 _( k# R, G1 ^7 Q' L
LoadModule cache_module modules/mod_cache.so O& T# h1 F1 J. _$ Z( I
LoadModule disk_cache_module modules/mod_disk_cache.so5 o1 q5 A7 m- k
LoadModule mem_cache_module modules/mod_mem_cache.so: O. F* o# e0 }( ?+ i
; k- D& L/ U& n
CacheForceCompletion 100
" q+ O X7 K7 x, S' g% x& v8 A3 @! I CacheDefaultExpire 3600; n3 _% D; `8 p0 j% y J8 H, d
CacheMaxExpire 86400
4 v `; ]: Q$ r' h' |( k7 j' F7 L CacheLastModifiedFactor 0.1
) g% Z! T+ r; y# ~
7 B# b4 E) d! ?9 y+ n: l( ~- n CacheEnable disk /% \9 i$ ~9 o0 t4 L* z' y% O) {
CacheRoot c:/cacheroot! {. j" i0 e. y: G
CacheSize 3276807 w- a' [5 x J
CacheDirLength 49 |6 k; n7 Y+ P1 |* _! B
CacheDirLevels 5) |1 R9 M2 }2 b+ P0 J6 S
CacheGcInterval 4! n1 Q* m6 F: }/ ^6 }! t8 K% M$ K
8 e8 A4 g* h+ R# ?1 P" k3 V. r( ?
, e0 w- j' `# C; Q" h# v/ ?8 Q CacheEnable mem /1 A' H' M3 \6 i8 X# J9 U5 H
MCacheSize 8192
3 ^5 D1 L! ~ n. E& a MCacheMaxObjectCount 100009 x# ~* |1 X. X3 a
MCacheMinObjectSize 1
/ B2 w9 E$ m! D8 i MCacheMaxObjectSize 51200
' }0 a7 s8 x, a% A: X
9 a( F/ D, @/ [, Z
1 c2 r$ G' Y4 W worker. Properties文件
) y, C/ ]4 k" k0 w6 I. `6 k/ ? #
) y& L: d5 G1 h' ]$ b1 `" f$ P # workers.properties ,可以参考
9 u* r2 {$ D9 d" w, ]# @) t* s http://jakarta.apache.org/tomcat/connectors-doc/config/workers.html* U# V) j" n' S
# In Unix, we use forward slashes: l7 p7 F2 c6 C& {$ H$ o5 R4 c* }
ps=9 r; b8 ^" v1 Q9 j. Z; M
# list the workers by name S; a2 U; Z5 D0 v, C
worker.list=tomcat1, tomcat2, loadbalancer! i9 }+ k: g- V7 z u8 ]1 f* z3 t
# ------------------------
* b( k- {) A! v" b: z' o # First tomcat server
6 T1 T: w& _5 | # ------------------------1 ]7 y' C, ~/ K1 o8 I3 R
worker.tomcat1.port=8009
3 y ]" O7 ~$ m2 ] v8 ~3 X worker.tomcat1.host=localhost8 W q6 G" H$ ?- W+ z9 E* H
worker.tomcat1.type=ajp13
( F# k E1 |- V4 x8 n* t& G # Specify the size of the open connection cache.
6 n) E1 ]2 U+ U8 G" T3 H #worker.tomcat1.cachesize. C" q7 P5 c2 |9 ?, ]" L; G
#
! g5 g8 s/ o% f; Z& ~1 R# b # Specifies the load balance factor when used with( v' W7 h( D* J% I0 Z! g; ?# H I
# a load balancing worker.
: @ s6 n( q4 ^& t3 r # Note:
/ ]( x) H7 u* e- x4 l0 F$ p0 T # ----> lbfactor must be > 0. s8 W- v2 M3 r# C6 |; n
# ----> Low lbfactor means less work done by the worker.
+ u/ @' Z* c5 P worker.tomcat1.lbfactor=900- Q6 H. ~* ~% Z6 E ^/ s2 D
# ------------------------
: m+ p) L; r3 N; B" e/ ?; J2 ~ # Second tomcat server
' B% ~$ X/ `; T5 p% n+ x # ------------------------% q: H, K0 s* Z* N: ]" {' ]
worker.tomcat1.port=8009: @4 d/ g _: i7 ~ |
worker.tomcat1.host=202.88.8.101
. j- a8 C* m6 M1 J, U; I& E' Q worker.tomcat1.type=ajp13
3 v& h2 f# i' o$ A' w. L # Specify the size of the open connection cache.2 n9 y" V% y9 X. i: Y
#worker.tomcat1.cachesize3 P3 V0 h1 x' \% N
#
' { n9 B1 k1 K6 H2 p # Specifies the load balance factor when used with
1 }, L1 [$ U5 D8 k$ f8 q # a load balancing worker.6 Q( n9 K2 k( j. U2 Y4 N
# Note:3 D8 W; C! C4 g; Y+ K, h* r5 |& D
# ----> lbfactor must be > 0, T& b- [2 Q" k8 j, [
# ----> Low lbfactor means less work done by the worker.
8 K. i0 @% i) d6 r+ s0 d6 U( N7 v worker.tomcat1.lbfactor=2000. k- H0 _$ `7 e4 r" Z3 a+ _
# ------------------------/ Q @3 z0 Z5 \8 U' u# h5 d
# Load Balancer worker( r6 j. ], L7 `' a6 G' ^$ k8 ~
# ------------------------
1 w) V$ X$ n6 Y3 f/ b* u* _( ]# m #
( Q8 x3 }# ~* F" o1 W" R # The loadbalancer (type lb) worker performs weighted round-robin q9 s- u3 m( B1 M0 O9 i$ c
# load balancing with sticky sessions., _+ [$ p1 b. l. S! u4 O
# Note:
0 g* `0 o% H/ ?" C # ----> If a worker dies, the load balancer will check its state
9 j. ]9 w5 m7 J1 Y& L # once in a while. Until then all work is redirected to peer( B* r. S& E& @
# worker.9 z4 z- Y( \1 z/ R
worker.loadbalancer.type=lb
$ k; w; Z$ d0 q# a. Z- T worker.loadbalancer.balanced_workers=tomcat1,tomcat2/ P- j3 p) F6 |. l
#
2 b( m; |6 n+ @/ a/ l # END workers.properties
2 l4 n- T" V; q # |