1. haproxy实现session粘性,负载均衡php。
vim /etc/haproxy/haproxy.cfg listen web_port bind 192.168.50.100:80 balance roundrobin mode http log global cookie websrv insert nocache indirect server web1 192.168.50.1:80 check inter 3000 fall 2 rise 5 cookie web1 server web1 192.168.50.2:80 check inter 3000 fall 2 rise 5 cookie web1
2. tomcat实现会话复制集群。
设备规划:
IP 主机名 服务
192.168.50.100 proxy 调度器 nginx
192.168.50.1 t1 tomcat1 jdk8、tomcat
192.168.50.2 t2 tomcat2 jkd8、tomcat
1#在proxy主机设置nginx实现后端tomcat主机轮询 vim /etc/nginx/conf.d/tomcat.conf <proxy balancer://tomcat-server> BalancerMember http://t1:8080 loadfactor=1 BalancerMember http://t2:8080 loadfactor=1 </proxy> <virtualHost *:80> servername proxy proxyrequests off proxyvia on proxypreservehost on proxypass / balancer://tomcat-serer/ proxypassreverse / balancer://tomcat-serer/ <virtualHost> systemctl restart nginx
2#在t1后端tomcat主机上修改conf/server.xml vim /usr/local/tomcat/conf/server.xml .....以上省略..... <Host name="t1" appBase="/data/webapps" unpackWARs="true" autoDeploy="true"> ###################在<Host> </host>块中间加下面一段内容 ############################## <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="230.100.100.100" #指定不冲突的多播地址 port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.50.1" #指定网卡的IP port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchIntercep tor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> #######################################以上内容是新加的 ################################# </Host> </Engine> </Service> </Server>
systemctl restart tomcat
3#在t2后端tomcat主机上修改conf/server.xml vim /usr/local/tomcat/conf/server.xml .....以上省略..... <Host name="t2" appBase="/data/webapps" unpackWARs="true" autoDeploy="true"> ###################在<Host> </host>块中间加下面一段内容 ############################## <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="230.100.100.100" #指定不冲突的多播地址 port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="192.168.50.2" #指定网卡的IP port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchIntercep tor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> #######################################以上内容是新加的 ################################# </Host> </Engine> </Service> </Server> systemctl restart tomcat
4# 修改t1主机的应用的web.xml文件 cp -a /usr/local/tomcat/webapps/ROOT/WEB-INF/ /data/webapps/ROOT/ vim /data/webapps/ROOT/WEB-INF/web.xml </description> <distributable/> #添加此行 </web-app> systemctl restart tomcat
5# 修改t2主机的应用的web.xml文件 cp -a /usr/local/tomcat/webapps/ROOT/WEB-INF/ /data/webapps/ROOT/ vim /data/webapps/ROOT/WEB-INF/web.xml </description> <distributable/> #添加此行 </web-app> systemctl restart tomcat
3. redis解释rdb, aof区别,优缺点?
rdb:基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快。
优点:
4. redis数据类型解释?
5. redis实现生产者消费者,发布订阅模型。
1#订阅者监听频道 redis-cli subscribe channel1 #订阅者事先订阅指定的频道,之后发布的消息才会收到
2#发布者发布消息 redis-cli publish channel1 test1 publish channel2 test2
3#订阅多个频道、多个匹配频道、所有频道 redis-cli subscribe channel1 channel2 #多个 subscribe chenn* #多个匹配 subscribe * #所有
6. redis使用场景?
(1)session共享:常见于web集群中的tomcat或者php中多web服务器seesion共享
(2)缓存:数据查询、电商网站商品信息、新闻内容
(3)计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景
(4)微博/微信社交场合:共同好友、粉丝数、关注、点赞评论等
(5)消息队列:ELK的日志缓存、部分业务的订阅发布系统
(6)地理位置:基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能。
7. jvm垃圾回收原理,如何优化?”
(1)标记-清除mark-sweep算法:分垃圾标记阶段和内存释放阶段。标记阶段,找到所有可访问对象打个标记。清理阶段,遍历整个堆,对未标记对象逐一进行清理。
(2)标记-压缩mark-compact算法:分垃圾标记阶段和内存整理阶段。标记阶段,找到所有可访问对象打个标记。内存清理阶段时,整理时将对象向内存一端移动,整理后存活对象连续的集中在内存一端、
(3)复制copying:先将可用内存分为大小相同区域A和B,每次只用其中一块,比如A。当A用完后,则将A中存活的对象复制到B。复制到B的时候连续的使用内存,最后将A一次性清除干净。
tomcat性能优化
1#内存空间优化 vim /usr/local/tomcat/bin/catalina.sh JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g - XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking - XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 - XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 - XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC - XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection - XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods" #-server:服务器模式 #-xms:堆内存初始化大小 #-xmx:堆内存空间上限、 #-xx:NewSize=:新生代空间初始化大小 #--xx:MsxNewSize=:新生代空间最大值
2#线程池调整 vim /usr/local/tomcat/conf/server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
原文地址:http://www.cnblogs.com/wangyinbo2022/p/16660595.html