1、企业常见的中间件产品有哪些?
商业:nginx企业版,jobss
开源:nginx社区版,tomcat,apache
2、Tomcat软件早期名字及其主要作用?
Tomcat的前身为Catalina、Catalina是一个轻量级的Servlet容器.
tomcat是一款小型的web应用服务器,在并发不是特别高的中小型企业被普遍应用。
3、什么是JDK?JDK中都包含哪些运维常用命令工具?
JDK是用于Java语言开发工具包
常用命令:java -version(用于查看java版本号)
jmap -histo java进程id (查看java进程中的所有实例、实例的个数)
4、简述部署Tomcat软件的思路?
首先导入JDK以及Tomcat软件包,导入完成后将JDK以及Tomcat解压到root目录下并将JDK解压包、然后移动到/usr/local/java下Tomcat解压包导入到/usr/local/tomcat下,然后修改/etc/profile文件在末尾添加JAVA_HOME=/usr/local/java;PATH=$PATH:$JAVA_HOME/bin。最后用source重启/etc/profile文件;
再用java -version查看JAVA版本号,删除原始的JAVA版本号,再重启/etc/profile文件并且启动脚本就完成了Tomcat的安装,可以利用浏览器查看是否安装完成,在输入框输入ip地址:8080,有tomcat页面就代表安装完成
5、Tomcat软件项目发布目录及库文件存放目录?
项目发布目录在/usr/local/tomcat/webapps下
库文件存放在/usr/local/tomcat/lib下
6、Tomcat主配置文件server.xml的作用?
server.xml中主要由三部分组成,<Server><Server><Connector><Connector><Engine><Host><Context>
Server包裹其他两部分可以看做是整个容器
server.xml作为主配置文件是整个服务的核心,其中包括四类:
顶层元素:<Server>和<Service>
连接器:<Connector>
容器:<Engine><Host><Context>
内嵌组件:可以内嵌到容器中的组件。实际上,Server、Service、Connector、Engine、Host和Context是最重要的最核心的Tomcat组件,其他组件都可以归为内嵌组件。
7、Tomcat配置组件host/context作用?参数appBase/autoDeploy/reloadable的作用?
Host虚拟主机的作用,是运行多个Web应用(一个Context代表一个Web应用),并负责安装、展开、启动和结束每个Web应用。
Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine
reloadable有两个值,false和true,当值为false时,Tomcat服务会关闭监控,为true时会开启
autoDeploy
appBase
8、描述Tomcat处理客户请求的流程?
当客户输入域名通过8080端口发送请求时,会被Connector监听,Connector主要是用于端口监听,
9、Tomcat连接数据库的文件名为?
在server.xml 文件里面的context配置Resource
10、Tomcat支持的虚拟主机类型有?
基于域名和端口
域名的就是在host的name属性添加,端口的需要复制一个service
11、简述Tomcat多实例的作用并解释以下部署方式?
单实例单应用:单实例单应用就是开启tomcat的一个实例进程,在server.xml的host配置里面
指定一个网站路径。
单实例多应用:开启一个tomcat实例,但是配置多个host虚拟主机,可以一个实例配置部署多个网站
多实例单应用:就是开启多个tomcat实例,但是host项目路径和jdbc文件都指向一个网站目录。
多实例多应用:就是每个实例对应一套网站。
12、描述Tomcat多实例部署流程?
1.在/usr/local/创建实例目录,比如tomcat_sess/tomcat1和tomcat_sess/tomcat2
2.然后把解压好的tomcat的conf文件拷贝到tomcat1和tomcat2,并在下面创建bin目录
3.然后再创建开启关闭tomcat实例的脚本,给他们加上执行权限
4.再修改conf下面的配置文件:server.xml,把里面的端口都改为和多个实例不同,
否则出现端口占用。
13、Tomcat管理页面都包含哪些关键信息?
jvm内存使用状态:已使用,未使用,总内存
最大线程数,当前线程数,
最大处理时间,处理时间,请求计数。
端口,tomcatio模式
14、描述Tomcat监控方式并描述Tomcat远程监控功能的开启方式?
到/tomcat/bin/catalina.sh 文件添加打开端口的配置
然后可以到Windows已经解压jdk安装包目录下,打开jconsole.exe
再输入要监控的ip和配置文件的端口号
15、Tomcat安全方面优化方式(13种)
端口隐藏,禁用端口管理端,降权启动,文件列表访问控制,版本信息隐藏,访问控制,启停脚本权限回收,页面超时时间,页面压缩,ssl加密,设置最小内存、最大内存
16、描述什么同步、异步、阻塞、非阻塞?
同步:比如一个请求过来时,服务器处理完这个请求才会处理下一个请求。
异步:比如过来一个请求,服务器处理这个请求没得到结果之前还可以处理别的事情。
阻塞:不能得到结果之前,当前线程会挂起。
非阻塞:不能得到结果之前,当前线程不会被阻塞,且并行执行其他操作。
17、描述Tomcat的BIO、NIO、AIO模式的特点及适用场景?
java BIO:同步阻塞,当用户有一个请求过来时,javaBIO机制调用一个线程来连接请求,这个线程会一直存在就算用户断开了连接也会占用服务器资源,从而造成线程过多对资源消耗过大。
适用与较小型的架构,不能支撑并发过高的应用。
java NIO:同步非阻塞,当用户的请求过来时,NIO机制会把请求放入到多路复用器里面,如果里面的请求需要用到io操作,就分配
适用于轻型的高并发场景,比如聊天邮件服务,它是基于缓冲来设置非阻塞nio操作。
java AIO:异步非阻塞,服务器实现模式是一个有效的线程,服务器会把请求给IO给OS系统,然后系统再通知服务器启动一个有效的IO线程。
适用于web高并发场景,是当用户请求过来时,操作系统会通知服务器创建一个有效的连接请求。
18、描述Tomat线程池的作用及优化选项?
线程池的作用是减轻用户访问量大的时候而创建大量线程消耗过多资源和io。
可以使用maxthreads参数 创建最大线程数
minsparethreads参数 创建最小线程数量
prestartminsparethreads 参数 是否在启动就创建minsparethreads个线程。
该配置项在connector默认的端口8080配置
19、描述Tomat连接器的作用及优化选项?
连接器就是tomcat请求入口,connector监听8080端口的请求。
可以配置参数,比如禁用DNS,指定字符集,指定post请求最大值,
指定最大连接数,禁用较长超时连接。
20、描述Tomcat的热部署及热加载?
热加载:tomcat会指定专门的目录监控他们有没有发生改变,如果发生改变就重新加载。
热部署:整个项目重新部署,所有session缓存会被释放,相当于重启机器。
21、描述JVM的新生代、老年代、永久代?
jvm新生代:新生成的对象都是放在新生代里面,新生代的作用是尽可能回收那些生命周期短的对象。
jvm老年代:主要保持那些生命周期长的对象,但不一定不会被GC回收。
jvm永久代:里面的对象永远不会被回收,一般保存的是class,和方法。
22、描述Tomcat针对JVM优化参数有哪些及其含义?
tomcat性能取决于jvm内存大小,而合理的内存参数优化可以使得tomcat性能提高。
在tomcat/bin/catalina.sh 配置文件下面可以使用Xms设置jvm最小内存Xmx设置最大内存。
可以使用XX:NewSize 设置年轻代大小 XX:MaxNewSize设置年取代最大大小。
可以使用XX:PermSize设置永久代大小 XX:MaxPermSize 设置最大永久代大小。
23、描述什么session、什么是cookies?
Session是由应用服务器维持的一个服务器端的存储空间(内存中),用户在连接服务器时,会由服务器生成一个唯一的SessionID,
客户端使用该Session ID 为标识符来存取服务器端的Session存储空间。而Session ID则保存到客户端,使用浏览器Cookie保存的。
Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
24、描述Tomcat集群中常见的session解决方案?
解决方案一:Session绑定:
Session绑定可以利用负载均衡的源地址Hash(ip_hash)算法实现
解决方案二:Session复制
Session复制是小型架构使用较多的一种服务器集群Session管理机制。应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之间同步Session对象,使每台服务器上都保存了所有用户的Session信息,这种方案实现简单,从本机读取Session信息也很快速,但只能应用在集群规模比较小的环境下
解决方案三:Session服务器之Memcached
安装Memcached
解决方案四:Session服务器之Redis
安装Redis
25、描述Memcached及Redis软件的区别?
Redis与Memcached的区别
内存利用率:使用简单的key-value(键值对)存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。
性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
Redis支持数据的备份,即master-slave模式的数据备份。
Redis不仅仅支持简单的key-Value类型的数据,同时还提供list,set,zset,hash等数据结构的存储