Apache JServ协议1.3版(简称ajp13)是一个二进制的TCP传输协议,相比当前HTTP这种纯文本协议来说它的效率和性能更加高效,然而,目前的浏览器并不能直接支持ajp13,就连目前非常火爆的nginx也没有相应的模块能支持ajp。按照官方的说法就是如果你使用的是apache,而Apache的proxy_ajp模块进行反向代理能大大提高动静分离的性能(说白了就是仅对Apache有用)。如果你用得不是apache那就趁早这样设置吧:
管理页面能看到我们服务的所有配置信息,一般在生产上是不建议开启的。
另外一个就是在我们部署完成tomcat之后建议做以下处理:
删除conf目录下的tomcat-users.xml
删除webapps目录下默认的所有目录和文件
将tomcat网站目录配置在安装目录以外的目录
监牢模式是指让服务通过非root用户启动、关闭、管理tomcat。
在切换用户之前先关闭tomcat服务再以普通用户的身份启动tomcat能看到服务启动成功。
tomcat的访问控制相当于nginx的autoindex功能,编辑conf目录下的web.xml文件,设置为true则开启:
tomcat和其它web服务器也一样需要隐藏版本信息防止通过漏洞对网站进行攻击,在web.xml添加:
<error-page>
4727 <error-code>403</error-code>
4728 <location>/forbidden.jsp</location>
4729 </error-page>
4730
4731 <error-page>
4732 <error-code>404</error-code>
4733 <location>/notfound.jsp</location>
4734 </error-page>
4735
4736 <error-page>
4737 <error-code>500</error-code>
4738 <location>/busy.jsp</location>
4739 </error-page>
tomcat的访问控制相当于nginx的deny跟allow,用来限制某个IP的访问请求只需在host相应区内配置:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.8.*" />
[root@localhost:/app/tomcat/bin]# chmod 700 ./*.sh
在server.xml修改为:
%{Referer}i %{User-Agen t}i %D" resolveHosts="false"
先不设置数值,通过压力测试软件做压力测试看看tomcat性能再增加优化参数。
常见的压力测试工具:
压力测试going工具 | |
---|---|
ab/webbench | http压力测试 |
jmeter | 压力测试java(tomcat) |
dd/fio | 磁盘 |
mysqlslap | 测试数据库 |
loadrunner | 专业测试工具 |
jmeter压力测试工具准备
下载好jmeter工具之后在bin目录下有个jmeter.bat文件打开之后
配置好之后可以看到一些信息:
聚合报告中各项项指标含义如下:
样本
:jmeter发送了多少个请求
平均值
:平均响应时间
中位数
:50%用户的响应时间
90%百分位
:90%用户的响应时间
最小值
:最小响应时间
最大值
:最大响应时间
异常
:本次测试产生错误请求的数量
吞吐量
:每秒完成的请求数,我们要优化调整的参数
接收
:每秒从服务器接收到的数据量
调整线程组的线程数等参数用于压力测试:
maxThreads="500"
:最大的线程数,根据CPU的运算能力设置大小,如果CPU在计算的情况下应适当设置小一些;如果是IO频繁的情况下,则适当调大
acceptCount="500"
:当达到最大线程数量的时候的队列长度,一般设置跟maxThreads数一样
minSpareThreads="10"
:空闲时最小的线程数量
enableLookups="false"
:禁用DNS解析
compression="on"
:打开压缩功能
compressionMinSize="2048"
:最小压缩文件大小,单位字节
compressableMimeType="text/html,text/plain,text/css,application/javascript,application/json,application/x-font-ttf,application/x-font-otf"
:压缩哪些类型的文件
disableUpTimeout="true"
:禁用上传文件超时
acceptorThreadCount="2"
:接收连接线程的个数
调整jvm的初始内存大小:
修改catalina.sh文件
JAVA_OPTS='-Xms1024m -Xmx1024m -Xloggc:/var/log/tomcat_gc.log'
-Xms
:jvm初始内存大小
-Xmx
:jvm最大内存,一般设置为-Xms的2倍
gc
:垃圾回收机制,定期清理jvm内存
-Xloggc
:执行gc时候记录日志
如果是jar包在解压时指定这些参数:java -jar xxx.jar -Xms1024m -Xmx1024m -Xloggc:/var/log/tomcat_gc.log