??xml version="1.0" encoding="utf-8" standalone="yes"?>
然后调整里边JavaMs?span lang="EN-US">JavaMx的|前者表C行时加蝲的最内存,后者表C可利用的最大内存,单位?span lang="EN-US">MQ要换到十进制下L。这个问题搞?jin)三个周才找到解军_法,W一ơ就败在此处Q?span lang="EN-US">
W二ơ什么错误是其中一台机器上tomcat启动报错Unable to start cluster. org.apache.catalina.tribes.ChannelException: java.net.SocketException: error set ting options; No faulty members identified. Q搞?jin)一天没有找到解军_法,弃之Q那位仁兄如果有解决办法Ƣ迎赐教Q?span lang="EN-US">
W三ơ集方式和前两ơ没什么区别,都是采用http_proxy形式作ؓ(f)Apache?span lang="EN-US">tomcat之间q接的桥梁,q次把成功的配置详细的说明下Q?span lang="EN-US">
1.Lapache?span lang="EN-US">httpd.conf目录中以下几行的注释
#change here start
#end |
# Virtual hosts
# change here two step
是L?jin)注释,主要用于配置虚拟机文?span lang="EN-US"> |
2.
?span lang="EN-US">httpd.conf最下边加上q些东东
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://192.168.0.22:9001 loadfactor=1 route=jvm3
BalancerMember ajp://192.168.0.22:9003 loadfactor=1 route=jvm4
BalancerMember ajp://192.168.0.22:9090 loadfactor=1 route=jvm5
</proxy>
ProxyRequests Off
<proxy balancer://cluster2>
BalancerMember ajp://192.168.0.1:8009 loadfactor=1 route=jvm1
</proxy>
ProxyRequests Off
<proxy balancer://cluster3>
BalancerMember ajp://192.168.0.1:9009 loadfactor=1 route=jvm2
</proxy> |
具体什么意思就不说?jin),W一行表格是做集用Q下边两个仅作ؓ(f)负蝲均衡之用Q可以说没均衡负蝲Qؓ(f)啥?׃?span lang="EN-US">tomcat你做什么负载啊Q呵c(din)重点关注这?/span>
<proxy balancer://cluster2> |
Cluster2 才是关键所在,他表CZ(jin)你的站点要在那个集内做负蝲均衡或者集,我们q里用到?jin)集和负蝲均衡Q其实就是一回事说白?jin),?/span> cluster 做集, cluster2 ?/span> cluster3 仅做负蝲均衡之用Q不?/span> session 复制和绘M持?/span>
2 下边我们看下 extra 目录?/span> httpd-vhosts.conf 文g的修改吧
以上边说?/span> cluster,cluster2,cluster3 Z各配|一个虚拟机
<VirtualHost *:80> ServerAdmin cxccma@163.com ServerName *****.com ServerAlias www.*****.com ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ </VirtualHost> |
<VirtualHost *:80> ServerAdmin cxccma@163.com ServerName *****.cn ServerAlias www. *****.cn ProxyPass / balancer://cluster2/ ProxyPassReverse / balancer://cluster2/ </VirtualHost> |
<VirtualHost *:80> ServerAdmin cxccma@163.com ServerName *****.com ServerAlias www. *****.com ProxyPass / balancer://cluster3/ ProxyPassReverse / balancer://cluster3/ </VirtualHost> |
以上明白?jin),是说是三个站点分别在不同的集内,Z么要q样做?主要是因为我们前期用的是 tomcat5.5 版本的,后期开发中友用C(jin) 6.x 版本的,所以整?jin)两个群集以兼容前期和后期的站点Q当然如果你需要在 cluster2, 或?/span> cluster3 中再加一?/span> tomcat 做负载均衡用 ,OK, 很简单,直接复制下就可以
3.apache 说完?jin),接下来说?/span> tomcat ?/span>
Tomcat 中不用做什么大的改动,首先?/span> server.xml 文g中部|你的虚拟主机啊
<Host name="www.******.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="D:\lejie" debug= "0" reloadable="false" crossContext="false" verbosity="DEBUG"> </Context> </Host> |
OK Q如果需要做全局集群Q那׃?/span> content.xml 文g?/span> Context 元素Q加上这句就?/span>
distributable="true" |
或者在单独的文件中?/span> web.xml 文g中加入这句话
< distributable/> |
到这应该都说完了(jin)吧,谈下个h的想法:(x) apache ?/span> tomcat 有三U连接方法:(x) JK Q?/span> mod_proxy,http_proxy Q前两者的配置都是繁琐,在可l护性和模块化上也没什么优点,我一直用W三U连接方法,采用 AJP 直连Q?/span> AJP1.3 在连接上表现出明昄优点Q所以我也徏议采用第三种q接?/span>
是一个工作ȝ吧,Ƣ迎各位不吝赐教Q如果有什么疑问请通过以下方式联系本h
模式 | 含义 |
0 | 不要~存查询l果或检索缓存的l果? |
1 | ~存查询Q除非它们以SELECT SQL_NO_CACHE开头? |
2 | Ҏ(gu)需要只~存那些以SELECT SQL_CACHE开头的查询? |
· query_cache_size军_分配l缓存的内存数量Q单位是字节?br />
· query_cache_limit讄被缓存的最大结果集大小Q比q个值大的查询结果不?x)被~存?br />
例如Qؓ(f)?jin)激zL询缓存ƈ为它分配16MB内存Q在配置文g中用下面的讄Q?br />
[mysqld]
query_cache_type=1
query_cache_size=16M
即query_cache_type的D|ؓ(f)Ӟquery_cache_size指定内存数量也会(x)被分配。ؓ(f)?jin)避免浪费内存,只有在希望激zȝ存的时候才把大设|成大于零。同Ӟ即query_cache_type不ؓ(f)Ӟ查询~存的大设|ؓ(f)零也?x)禁用缓存?br />
使用?jin)查询缓存的独立客户端?x)在服务器的默认缓存模式状态下操作。客L(fng)可以使用下面的语句改变自q查询的默认缓存模式:(x)
SET query_cache_type = val;
其中的val可以???Q它的意义与讄服务器启动时的query_cache_type变量的意义是相同的。在SET语句中,OFF、ON和DEMANDq些W号g0??对应?br />
客户端还可以通过在SELECT关键字后天添加调节符来控制个别查询的~存操作。如果缓存模式是ON或DEMANDQ那么SELECT SQL_CACHE语句?x)让查询l果被缓存。SELECT SQL_NO_CACHE语句?x)查询l果不被~存?br />
如果某些查询从经常改变的数据表中(g)索信息,那么抑止对这些查询的~存操作是有用的。在q种情况下,~存未必有多大用处。假设你把Web服务器请求的日志存储在MySQL数据表中Q同时周期性地q行该数据表上的一l统计查询。对于很J忙的Web服务器来_(d)?x)频J地出现新行插入该数据表的操作,因此该数据表的Q何缓存了(jin)的查询结果很快就变成无效的了(jin)。其含义是,管你周期性地提交l计查询Q但是查询缓存可能对q些查询没有什么h(hun)倹{在q种情况下,最好用SQL_NO_CACHE调节W告诉服务器不要~存q些查询的结果?
g问题
本文前面的部分中讨论的帮助你提高服务器性能的技术是没有考虑g配置的。你当然可以通过使用更好的硬件来让服务器q行地更快。但是ƈ非所有的与硬件相关的改变都有相同的h(hun)倹{当我们评估哪些g提高?jin)性能的时候,最重要的原则与调整服务器参数的原则是相同的Q尽可能地把最多的信息攑֜最快的存储中,q让q些信息可能地保持在该存储中?br />
你可以改变几U硬仉|来提升服务器的性能Q?br />
在计机上安装更多的内存。这可以让你把服务器的缓存和~冲区大值配|成更大的,从而数据保存在内存中的时间更长,从磁盘上d信息的需要更?br />
重新配置pȝQ如果你拥有_的内存,能够在内存文件系l中执行全部的交换操作,那么删除所有的盘交换讑֤。否则,即你拥有够的用于交换操作的RAMQ某些系l仍然会(x)跟磁盘进行交换操作?br />
增加更快的磁盘以改善I/O{待旉。在q种情况下,寻道旉是有代表性的主要的性能军_因素。横向移动磁头的速度比较慢,在磁头定位以后,从磁道上d信息块的速度相对较快。但是,如果需要选择是添加更多的内存q是更快的磁盘,那么最好选择d更多的内存。内存L比磁盘快Q而且d内存可以让你使用更大的缓存,从而减磁盘活动?br />
通过在物理设备上划分盘?gu)zd来获取ƈ行操作的优势。如果你可以在多个物理设备上划分L作和写操作,那么光度׃(x)比从同一个设备读写要快一些。例如,如果你把数据库存储在一个设备上Q把日志存储在另一个设备上Q那么同时向两个讑֤写入信息的速度比数据库和日志׃n同一个设备的速度要快。请注意Q用同一个物理设备上的不同分Z是q行操作。这是没有好处的Q因为它们仍焉要争用相同的物理资源Q磁_(d)(j)?br />
在把数据重新部v到另外一个设备之前,你要保自己知道pȝ的负载状c(din)如果在某个特定的物理设备上正在q行一些重要的业务Q那么把数据库放在该讑֤上有可能使性能更差。例如,如果你正在处理大量的Web业务Q同时把数据库移动到Web服务器文档目录所在的讑֤上,可能感觉不CQ何优ѝ?br />
使用RAID讑֤可以让你获取q行操作的优ѝ?br />
使用多处理器g。对于类似MySQL服务器的多线E应用程序来_(d)多处理器g可以同时执行多个U程?/p>
3、下载安装JDK6
下蝲地址Qhttp://java.sun.com/javase/downloads/?intcmp=1281Q下载Java SE Development Kit (JDK) 6 Update 11?br />
安装JDK的过E非常简单,你只需要依ơ下一步就可以完成d?jin),安装q程注意选择安装目录Q我们这里假讑֮装目录ؓ(f)d:\java\jdk1.6?br />
4、下载Tomcat 6
下蝲地址Qhttp://tomcat.apache.org/download-60.cgiQ选择windowsq_的tomcat软gQ你可以选在Windows Service Installer 版本?br />
5、安装Tomcat 6
q个q程中也是近乎傻瓜型的,q里Tomcat 6的安装过E截囑֦下:(x)
6、下载和配置mod_jk
下蝲地址Qhttp://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.27/mod_jk-1.2.27-httpd-2.2.10.soQ这里大安要注意一点,你应该更具你的apache的版本来选择mod_jk的版本。当你现在so文g之后Q接下来的Q务就是要so模块配置到apache服务器当中去?br />
首先mod_jk-1.2.27-httpd-2.2.10.so复制到apache的安装目录中modules目录中,你会(x)在这个目录(C:\Program Files\Apache Software Foundation\Apache2.2\modulesQ中看到很多的so文g。然后打开apache的配|文ӞC:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.confQ,在其中找到包含LoadModule字样的内容,在这些内容的下方d一个新的LoadModuleQ其目的是ؓ(f)?jin)给Apache增加一个新的模块功能,q个模块是mod_jkQ它的目的是Z(jin)让apache能够和tomcatq行协作。在LoadModule下方d如下一行内容:(x)
LoadModule jk_module modules/mod_jk-1.2.27-httpd-2.2.10.so
mod_jk模块要正工作,必须知道被它操控的tomcat服务器在哪里Q而这个内定w要被配置在另外一个文件中Q现在我们将q个文g命名为workers.propertiesQ将q个文g攑֜httpd.conf相同的地方(当然你可以放在Q何你希望的地方)(j)Q文件中的内容如下:(x)
ps=\
worker.list=ojava
worker.ojava.port=8009
worker.ojava.type=ajp13
worker.ojava.host=localhost
worker.ojava.lbfactor=1
有了(jin)q个配置文g之后Q我们必要告诉mod_jkq个文g的存在,所以需要再ơ打开httpd.conf文gQ在我们刚刚d的LoadModuleq一行的下方d如下一行内容:(x)
JkworkersFile conf/workers.properties
好了(jin)Q现在你已经完成?jin)apache和tomcat的通讯方式和参数的配置Q接下来需要做的就是配|哪个web应用需要由apache转交ltomcatq行处理Q我们以虚拟LZQ?br />
我们为apache增加新的虚拟L的配|,首先修改httpd.conf的配|,扑ֈ#Include conf/extra/httpd-vhosts.confQ将q一行前面的#去除掉,让这一行的配置生效。然后我们找到配|文件中如下的内容:(x)
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
其修改为如下的内容Q?br />
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
其目的是Z(jin)lapache配置虚拟LQ指定其他目录作为web|站的目录时产生无权讉K的错误?br />
接着打开C:\Program Files\Apache Software Foundation\Apache2.2\conf\extra\httpd-vhosts.confQ去掉里面已l配|的虚拟L部分的内容,如下所C:(x)
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.ojava.net
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host.ojava.net"
ServerName dummy-host.ojava.net
ServerAlias www.dummy-host.ojava.net
ErrorLog "logs/dummy-host.ojava.net-error.log"
CustomLog "logs/dummy-host.ojava.net-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.ojava.net
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host2.ojava.net"
ServerName dummy-host2.ojava.net
ErrorLog "logs/dummy-host2.ojava.net-error.log"
CustomLog "logs/dummy-host2.ojava.net-access.log" common
</VirtualHost>
d我们自己配置的信息,配置内容如下Q?br />
<VirtualHost *:80>
ServerAdmin steven@ojava.net
DocumentRoot "e:/ojava/web_root"
ServerName www.ojava.net
JkMount /* ojava
ErrorLog "logs/www.ojava.net-error.log"
CustomLog "logs/www.ojava.net-access.log" common
</VirtualHost>
到这里我们已l将对www.ojava.net域名|站的访问请求{交给?jin)tomcatq行处理?jin)。此时如果你需要在tomcat中进行虚拟主机的配置Q那么你可以l箋修改tomcat的配|文Ӟ如果你不需要,那么到这里,你已l完成了(jin)所以的配置q程。恭喜你Q现在重新启动apache和tomcatQ可以测试了(jin)Q成功了(jin)吗?有问题欢q交?/p>
本文转蝲http://blog.csdn.net/stevencn76/archive/2008/12/22/3584925.aspx