tomcat 优化

Tomcat安全优化

复制代码
1、修改telnet 管理端口8005,和shutdown命令为dangerous
2、修改默认的ajp 8009端口为不易冲突的大于1024端口;
3、通过iptables规则限制ajp端口访问的权限仅为线上机
4、 删除默认的{Tomcat安装目录}/conf/tomcat-users.xml文件,重启tomcat后将会自动生成新的文件;
5、 删除{Tomcat安装目录}/webapps下默认的所有目录和文件
6、将tomcat 应用根目录配置为tomcat安装目录以外的目录;
7、tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限;
8、如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发;
9、开启Tomcat默认访问日志中的Referer和User-Agent记录

Tomcat性能优化

复制代码
1、开启GC日志、设置jvm的初始堆大小和最大堆大小
2、和开发一起优化代码
3、加内存

tomcat优化

优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加:

复制代码
JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"

其中:

复制代码
• -server:启用jdk的server版本。
• -Xms:虚拟机初始化时的最小堆内存。
• -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
• -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
• -XX:MaxNewSize:新生代占整个堆内存的最大值。
• -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。

这些以后再看,先看优化的!

1)错误提示:java.lang.OutOfMemoryError:Java heap space

复制代码
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。
复制代码
set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

复制代码
PermGenspace的全称是Permanent Generationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行precompile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:
复制代码
set JAVA_OPTS=-XX:PermSize=128M

3)在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

相关推荐
程序员良辰18 小时前
【TongWeb8】使用 Crontab 定时重启和检测 TongWeb 服务
java·中间件·tomcat
上海云盾商务经理杨杨20 小时前
Tomcat 弱配置漏洞渗透实战!批量 getshell 高频漏洞
java·web安全·tomcat
小张同学a.5 天前
zabbix企业级监控平台3——服务监控与API实战
linux·运维·mysql·nginx·tomcat·zabbix
xxwl58511 天前
数据库后端接口测试报告
spring boot·mysql·tomcat
次次皮13 天前
Linux 下通过 XShell 手动更新 Tomcat 应用并重启
前端·tomcat·jar
Listen·Rain14 天前
用AI开发出一个AI
java·人工智能·spring boot·tomcat·intellij-idea·mybatis·visual studio
Full Stack Developme15 天前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
Full Stack Developme15 天前
Tomcat 如何处理HTTP请求
java·http·tomcat
Full Stack Developme16 天前
Tomcat 设计原理
java·tomcat
Full Stack Developme16 天前
Tomcat NIO连接器内部如何实现零拷贝 Session管理如何实现集群同步
java·tomcat·nio