Linux运维昱笔记(十):Tomcat优化以及三种运行模式
2020-01-14 10:13
232 查看
Linux运维昱笔记(十):Tomcat优化以及三种运行模式
一、Tomcat优化
类别 | 配置内容和说明 | 配置 | 备注 |
---|---|---|---|
1、telnet管理端口保护 | 1、修改默认的8005管理为不易猜测的端口(最好大于1024) 2、修改SHUTDOWN指定为其他字符串 |
配置项的配置只是建议配置,可以按照服务实际情况进行合理配置,但要求端口配置在8000~8999之间。 | |
2、AJP连接端口保护 | 1、修改默认的AJP8009端口为不宜冲突的大于1024端口 2、通过iptables规则限制AJP端口访问的权限为线上机器 |
配置项的配置只是建议配置,可以按照服务实际情况进行合理配置,但要求端口配置在8000~8999之间,保护此端口的目的在于防止线下的测试流量被mod_jk转发到线上tomcat服务器 | |
3、禁用管理端 | 1、删除默认的(Tomcat安装目录)/conf/tomcat-user.xml文件,重启tomcat后将会自动生成新的文件 2、删除(tomcat安装目录)/webapps下默认的所有目录和文件 3、将tomcat应用根目录配置为tomcat安装目录以外的目录 |
对于前段Web模块,Tomcat管理端属于Tomcat的高危安全隐患,一旦被攻破,黑客通过上传web shell的方式将会直接取得服务器的控制权,后果极其严重 | |
4、降权启动 | 1、tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限 2、如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发 |
代码如下 | 避免一旦tomcat服务被入侵,黑客直接获取该机用户权限危害整个server的安全 |
5、文件列表访问控制 | conf/web.xml文件中default部分listings的配置必须为false | listings false |
false为不列出目录文件,true为允许列出,默认为false |
6、版本信息隐藏(强制) | 1、修改conf/web.xml,重定向403、40以及500等错误到指定的错误页面 2、也可以通过修改应用程序目录下的WEB-INF/web.xml下的配置进行错误页面的重定向 |
403/fordidden.jsp 404/notfound.jsp 500/systembusy.jsp |
在配置中对一些常见错误进行重定向,避免当出现错误时Tomcat默认显示的错误页面暴露服务器和版本信息,必须确保程序根目录下的错误页面已经存在 |
7、Server header重写 | 在HTTP Connector配置中加入server的配置 | server=“webserver” | 当tomcat HTTP端口直接提供web服务时此配置生效,加入此配置,将会替换http响应Server header部分的默认配置,默认是Apache-Coyote/1.1 |
8、访问限制(可选) | 通过配置,限定访问的ip来源 | 通过配置信任ip的白名单,拒绝非白名单ip的访问,此配置主要是针对高保密级别的系统,一般产品线不需要 | |
9、启停脚本权限回收 | 去除其他用户对Tomcat的bin目录下shutdown.sh、startup.sh、catalina.sh的可执行权限 | chmod -R 744 tomcat/bin/* | 防止其他用户有启停线上Tomcat的权限 |
10、访问日志格式规范(推荐) | 开启Tomcat默认访问日志中的Referer和User-Agent记录 | 开启Referer和User-Agent是为了一旦出现安全问题能够更好的根据日志进行问题排查 |
降权启动代码
useradd tomcat cp -a /usr/local/tomcat /home/tomcat/ chown -R tomcat.tomcat /home/tomcat/ su -c '/home/tomcat/bin/startup.sh' tomcat ps -ef | grep tomcat
11、禁止列出目录
vim /usr/local/tomcat/conf/web.xml 110 <init-param> 111 <param-name>listings</param-name> 112 <param-value>false</param-value> 113 </init-param>
12、页面超时
581 <session-config> 582 <session-timeout>30</session-timeout> 583 </session-config>
13、默认页面
4679 <welcome-file-list> 4680 <welcome-file>index.html</welcome-file> 4681 <welcome-file>index.htm</welcome-file> 4682 <welcome-file>index.jsp</welcome-file> 4683 </welcome-file-list>
14、配置网页传输压缩
注:如若有apache、nginx等做代理,tomcat则不必配置传输压缩
vim /usr/local/tomcat/conf/server.xml 69 <Connector port="8080" protocol="HTTP/1.1" 70 connectionTimeout="20000" 71 redirectPort="8443" /> 72 compression="on" #开启压缩 73 compressionMinSize="50" #指定最小的压缩文件,单位是字节 74 noCompressionUserAgents="gozilla,Traviata" #此浏览器类型不进行压缩 75 compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /> #文件的格式 /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh
15、 Tomcat故障排查方法
查看catalina.out日志文件
二、Tomcat运行模式
1、同步概念:
- 同步:自己亲自出马持银行卡到银行取钱(使用同步IO时,java自己处理IO读写)
- 异步:委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS需要支持异步IO操作API。
- 阻塞:ATM排队取款,你只能等待(使用阻塞IO时,java调用会一直阻塞到读写完成才返回)。
- 非阻塞:柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器会通知可读写时再继续进行读写,不断循环直到读写完成)。
2、java对BIO、NIO、AIO的支持:
- java BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
- Java nio:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
- java AIO(NIO.2):异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理。
3、BIO、NIO、AIO使用场景分析
-
BIO
BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解,性能非常低下,没有经过任何优化处理和支持。 -
NIO
NIO(new l/O是 java SE1.4及后续版本提供的一种新的I/O操作方式(即 Java.nio包及其子包)。java nio是一个基于缓冲区,并能提供非阻塞I/O操作的java API,因此nio也被看成是non-blocking l/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能,适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中。
-
APR
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高了性能。
未完待续…
- 点赞 1
- 收藏
- 分享
- 文章举报
相关文章推荐
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- linux 下tomcat安装apr运行模式优化并发性能
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- tomcat运行三种模式:http-bio|http-nio|http-apr介绍
- linux下查看CPU个数、核数、运行模式以及是否支持超线程技术
- 开启Tomcat APR运行模式,优化并发性能
- Linux运维笔记-文档总结-DNS的介绍及各种DNS模式的部署(全)
- 【Tomcat】Tomcat Connector的三种运行模式【bio、nio、apr】
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式
- Linux学习笔记-----虚拟机的三种网卡模式
- Tomcat三种Connector运行模式
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- Linux中基础笔记(必备知识)包含常用指令以及tomcat搭建 系列2
- 开启Tomcat APR运行模式,优化并发性能
- Tomcat 的三种(bio,nio.apr) 高级 Connector 运行模式【转】