第十一周作业

1. 总结 tomcat实现多虚拟机

在Tomcat服务器配置server.xml文件中添加Host配置块

name:定义虚拟机服务器名称,也就是网站域名
appBase:定义存放网站内容的文件目录
prefix:定义虚拟机的访问日志名称,每个虚拟机建议都单独存放一份访问日志
pattren:定义访问日志的格式

2. 总结 tomcat定制访问日志格式和反向代理tomcat

Tomcat日志格式的定义在server.xml配置文件中,Host配置块,pattern项中, 由于考虑到Tomcat工作负载很重,访问日志可以定义在反向代理的Nginx服务器上,以缓解Tomcat的工作压力。

实现Tomcat的反向代理,可以使用Nginx实现。在Nginx代理服务器上主配置文件中定义字配置文件目录,创建子配置文件Tomcat.conf

nginx反向代理

upstream定义被代理的服务器tomcat:10.0.0.201和10.0.0.202,在server中定义代理的域名和端口,proxy_pass引用被代理的集群

3. 完成 tomcat实现MSM集群

部署规划:10.0.0.201 Tomcat1服务器
                  10.0.0.202 Tomcat2服务器
                  10.0.0.100 memcached1数据库
                  10.0.0.101 memcached2数据库
                  10.0.0.200 做Nginx代理服务器

采用非Sticky模式,提供容错性

1.安装Tomcat1服务和Tomcat2服务,启用Nginx代理

安装好服务后,在tomcat/webapps/ROOT目录中准备好观察session的jsp文件
Nginx做反向代理

2.在Tomcat服务器上安装mem的java库文件

将这些库文件放到/usr/local/tomcat/lib目录下

3.准备memcached数据库
采用包安装
Rocky安装:yum install -y memcached
Ubuntu安装:apt update && apt install -y memcached

安装后修改/etc/memcached.conf开启远程连接数据库,重启memcached服务
测试一下是否能远程连接到memcached

4.修改每台Tomcat服务器的/usr/local/tomcat/conf/context.xml配置文件

添加这段代码,然后重启Tomcat服务

打开浏览器刷新访问,实现session的会话保持

sessionID不变
sessionID不变

4. 总结 JVM垃圾回收算法和分代

垃圾回收算法:
    标记清楚算法:标记阶段,将所有标记存活的对象逐个标记,清理阶段,遍历整个堆,将未标记的对象逐一清除。优点是算法简单效率高,缺点是会造成内存碎片,内存空间不连续。
    标记压缩算法:标记阶段,将所有访问的对象逐个标记。内存清理阶段时,整理时将标记存活对象向内存一端移动,整理后存活对象连续的集中在内存一端。优点是没有内存碎片,内存空间连续,缺点是垃圾回收效率低。
    复制算法:将可用内存分为大小相同两块区域A和B,每次只用其中一块,A用完后,则将A中存活的对象复制到B。复制到B的时候连续的使用内存,最后将A一次性清除干净。优点是垃圾回收效率高,也没有内存碎片,缺点是浪费内存,资源消耗大

堆内存空间分为三个不同的类别:
    年轻代,老年代,持久代
年轻代又分为伊甸园区(刚刚创建的对象)和幸存区(幸存区分为from和to,地位相同,可以互相转换)。年轻代的对象存活时长低,适合使用复制算法。
老年区(长时间存活的对象)。老年代区域大,对象存活时间长,适合标记压缩算法。


5. 总结memcache使用,安装和MSM原理

memcached可以包安装:Rocky(yum install -y memcached)Ubuntu(apt install -y memcached)
编译安装:在memcached官网下载源码包,并安装编译依赖包(gcc make libevent-dev),解压,执行./configure,make && make install

安装完成后,修改配置文件,允许远程连接memcached数据库,启动服务,端口号11211

注释掉此行,即可实现远程链接

memcached在运行时必须使用普通用户,远程连接可以使用nc命令指定mem地址和端口号

memcached的工作机制采用了Slab Allocator机制来分配、管理内存。获取一块1M的内存空间后,Slab分配内存按照固定的字节大小等分成为chunk,memcached会根据数据的大小决定选择存到哪个chunk中。
Slab按照Chunk的大小分组,就组成不同的Slab Class, 第一个Chunk大小为 96B的Slab为Class1,第二个Chunk大小为 120B为Class 2,如果有100bytes要存,那么Memcached会选择下图中SlabClass 2 存储。Slab之间的差异可以使用Growth Factor(因子)控制,默认1.25

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • java动态网页技术 servlet 本质就是一段Java程序 在Servlet中最大的问题是,HTML输出和Ja...
    Liang_JC阅读 526评论 0 0
  • 1、haproxy https实现 配置haproxy,执行SSL加解密 配置nginx日志,记录x-forwar...
    yabao11阅读 263评论 0 0
  • 请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String...
    magicflute01阅读 150评论 0 0
  • 1、简述DNS服务器原理,并搭建主-辅服务器。DNS(Domain Name Service的缩写)的作用就是根据...
    马晖阅读 187评论 0 0
  • 1、编译安装搭建wordpress 软件介绍 WordPress是一个免费的开源项目,在GNU通用公共许可证下授权...
    卫清华阅读 163评论 0 0