转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48272857
今天就和大家一起来实现Tomcat和nginx的集群与负载均衡
一、Tomcat 集群配置端口规划
注:该端口是在同一台机器上启动2个tomcat,需要修改一下端口不重复,如果一台机器只部署1个tomcat其端口可以一样。
序号 |
SHUTDOWN |
AJP |
http |
集群Receiver |
1 |
8005 |
8009 |
8080 |
5001 |
2 |
8015 |
8019 |
8081 |
5002 |
1、Tomcat 集群配置
在server.xml中修改:
将:<engine name="Catalina" defaulthost="localhost"></engine>修改为:
<engine name="Catalina" defaulthost="localhost" jvmroute="jvm1"> </engine>
其中 jvmRoute="jvm1" 在不同的tomcat中名称不一样。
在
<cluster classname="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelsendopti expiresessi notifylisteners></cluster> <channel classname="org.apache.catalina.tribes.group.GroupChannel"> <membership classname="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" droptime="3000"></membership> <receiver classname="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"> port="5001" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <sender classname="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <transport classname="org.apache.catalina.tribes.transport.nio.PooledParallelSender"></transport> </sender> <interceptor classname="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"></interceptor> <interceptor classname="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"></interceptor> </receiver></channel> <valve classname="org.apache.catalina.ha.tcp.ReplicationValve" filter=""></valve> <valve classname="org.apache.catalina.ha.session.JvmRouteBinderValve"></valve> <deployer classname="org.apache.catalina.ha.deploy.FarmWarDeployer" tempdir="/tmp/war-temp/" deploydir="/tmp/war-deploy/" watchdir="/tmp/war-listen/" watchenabled="false"></deployer> <clusterlistener classname="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"></clusterlistener> <clusterlistener classname="org.apache.catalina.ha.session.ClusterSessionListener"></clusterlistener>
注意在同一台机器上:Receiver 节点端口:port="5001"要不一样。
2、修改tomcat的web.xml
需要修改tomcat的web.xml配置参数才能真正实现session同步复制的设置
<welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <distributable></distributable> (在倒数第二行增加这个代码才能实现session同步复制功能)
二、优化:
1、内存优化配置
1)Windows:
set JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Djava.awt.headless=true"
2)Linux
JAVA_OPTS = " -server -Xms512M -Xmx2048M -XX:MaxNewSize=256M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Djava.awt.headless=true"
2、其他优化配置:
1)加入如下配置1
<executor name="tomcatThreadPool" nameprefix="catalina-exec-" maxthreads="500" minsparethreads="50"></executor>修改
<connector port="8080" protocol="HTTP/1.1" c redirectport="8443"></connector>为
<connector port="8080" executor="tomcatThreadPool" protocol="HTTP/1.1" c enablelookups="false" redirectport="8443"></connector>修改:
<connector port="8009" protocol="AJP/1.3" redirectport="8443"></connector>为
<connector port="8009" executor="tomcatThreadPool" c enablelookups="false" redirectport="8443" protocol="AJP/1.3"></connector>
2)或者
修改
<connector port="8080" protocol="HTTP/1.1" c redirectport="8443"></connector>为
<connector port="8080" protocol="HTTP/1.1" maxthreads="500" acceptcount="50" c enablelookups="false" redirectport="8443"></connector>修改
<connector port="8009" protocol="AJP/1.3" redirectport="8443"></connector>为
<connector port="8009" maxthreads="500" c enablelookups="false" redirectport="8443" protocol="AJP/1.3"></connector>
注:两者的主要区别是:executor被起用且关联时maxThreads="500" 被忽略。
3)几个属性解释:
- maxThreads
Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。默认值200。 可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。
- acceptCount
指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。默认值10。
- minSpareThreads
Tomcat初始化时创建的线程数。默认值4。
- connnectionTimeout
网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。(本系统由于与后台系统接口超时时间较长,使用设置为60000)
- enableLookups
是否反查域名,默认值为true。为了提高处理能力,应设置为false
- Executor节点
表示Tomcat组件之间共享的线程池。
- maxIdleTime
空闲线程被关闭之前的毫秒数。默认值是60000。
三、Nginx + Tomcat负载均衡配置
在配置文件/usr/local/nginx/conf/nginx.conf文件中新增以下代码
upstream tomcat { server 192.168.100.50:8080 weight=1; server 192.168.100.50:8081 weight=1; }其中tomcat名称随意,注意IP地址和端口。
修改Server节点中location:
location / { root html; index index.html index.htm; }为
location / { #root html; #index index.html index.htm; proxy_pass http://tomcat6; }
注意http://tomcat中tomcat名称与上面的配置一样。
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了Tomcat+Nginx集群与负载均衡,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境