提高Tomcat服务器启动速度:几个小技巧 (tomcat服务器 启动速度)
Tomcat服务器是Java编写的一种Web应用服务器。它被广泛用于Java Web开发中。然而,Tomcat启动速度一直是网站建设者关注的焦点之一。如何提高Tomcat服务器的启动速度,成为了一个重要课题。本文将会介绍几个Tomcat服务器启动速度优化的小技巧,以帮助您提高Tomcat服务器的启动速度。
1. 减少应用程序的加载
一般情况下,Tomcat应用程序启动速度缓慢,往往是因为它们需要在Tomcat启动后立刻加载。为了减少应用程序的加载,可以将应用程序拆分成多个Web应用程序,并按照执行顺序依次加载,这样可以加快Tomcat服务器启动时间。此外,如果某个Web应用程序包含很多Jar文件,您可以使用一些工具将这些Jar文件归类到更少的Jar文件中,以减少应用程序的加载时间。
2. 配置Tomcat服务器
一些Tomcat服务器的配置可能不适合高负载场景。通过适当配置Tomcat服务器,可以减少Tomcat服务器启动的时间。以下是一些可以用来优化Tomcat服务器的配置:
(1)减少Tomcat服务器的默认连接器,因为默认连接器会导致Tomcat服务器启动缓慢。
(2)修改文件夹路径,将Tomcat服务器的工作目录移动到固态硬盘或者更快的磁盘驱动器上,以加快启动速度。
(3)禁用一些Tomcat服务器的默认应用程序,以减少应用程序的加载。
(4)清除Tomcat服务器中的所有临时数据和日志,以释放内存。
3. 更新Tomcat服务器软件包
不要使用旧版本的Tomcat服务器软件包,因为旧版本可能存在严重漏洞和性能问题。对于生产环境,应使用最新版本的Tomcat服务器软件包。更新软件包后,需要重新配置Tomcat服务器以确保它具有扩展性和更好的性能。
4. 启用G1垃圾收集器
Tomcat服务器默认使用CMS(Concurrent Mark Sweep)垃圾收集器。CMS垃圾收集器在处理停顿时间方面表现出色,但它可能会导致系统运行缓慢或内存增长。为了解决这个问题,您可以启用G1垃圾收集器。G1垃圾收集器具有更少的停顿时间,有助于提高Tomcat服务器的启动速度。
5. 安装内存优化工具
使用内存优化工具可以帮助减少内存使用量,并提高Tomcat服务器启动速度。以下是一些内存优化工具:
(1)jmap:该工具可以生成内存映射文件,以便您了解内存使用情况。
(2)jstat:该工具可以帮助您监控和调整Tomcat服务器的内存使用。
(3)jhat:该工具可以分析内存快照并帮助您查找内存泄漏问题。
结论
通过适当配置Tomcat服务器、拆分应用程序、更新Tomcat软件包、启用G1垃圾收集器以及使用内存优化工具,可以使Tomcat服务器在启动时更快。这些小技巧可以帮助您加快Tomcat服务器的启动速度,提高Web应用程序的性能和扩展性。因此,为了让网站更快地响应,建议您尝试上述优化技巧,以确保服务器能够更快地启动和执行。
相关问题拓展阅读:
在Eclipse中,Tomcat启动不了,一直到超时?
点击server页签,点击tomcat,会出现一个页面,修改一下启动时间。
eclipse启动tomcat超时解决方法:
现有的ECLIPSE都自带了TOMCAT插件,切换到SERVER目录下,然后新建一个SERVER
双击TOMCAT服务器,巧祥碰弹出TOMCAT对应的配置文件,按照如宴锋下进孝谈行设置即可:
这样即可解决启动超时的问题;
Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds.如果碰到这个错误,可以按以下2种方困启式修改
修改 workspace\.metadata\.plugins\org.eclipse.wst.server.core\servers.xml文件。
把 start-timeout=”45″ 改为 start-timeout=”450″ 或者更闹搏长
重启eclipse就可以了。
在window中选择Show View>Other,直接输入servers查询出来,选中,弹出窗口,右键tomcat,选择open,然后出现如图界面
把Timeouts 下的Start(in seconds)改为450,或者更大的数值即可
1、可能是明肢你磨虚设置的tomcat启动的等待时间太短。你可以设置下,打开你tomcat服务配置界面修改里面TimeOuts,中的start的时间,如图
2、可能你的工程中编译发布有问题。瞎槐燃
看看控制台输出日志,报错没
tomcat 性能调优
java性能优化原则:代码运算性能 内存回收 应用配置(影响java程序注意原因是垃圾回收)
代码层优化:避免过多的循环嵌套 调用和复杂逻辑
Tomcat调差搜优主要内容
1.增加更大连接数
2.调整工作模式
3.启用gzip压缩
4.调整JVM内存大小
5.作为web服务器时 与Apache整合或Nginx
6.合理选择垃圾回收算法
7.尽量使用较新版的JDK
生产环境实例
参数说明:
org.apache.coyote.http11.Http11NioProtocol:调整工作模式为Nio
maxThreads:更大线程数,默认150。增大值避免队列请求过多,导致响应缓慢。
minSpareThreads:最小空闲线程数
maxSpareThreads:更大空闲线程数,如果超过这个值,会关闭无用的线程。
acceptCount:当处理请求超过此值时,将后来请求放到队列中等待。
disableUploadTimeout:禁用上传超时时间
connectionTimeout:连接超时,单位毫秒,0代表不限制
URIEncoding:URI地址编码使用UTF-8
enableLookups:关闭dns解析,提高响应时间
compression:启用压缩功能
compressionMinSize:最小压缩大小,单位Byte
compressableMimeType:压缩的文件类型
Tomcat的三种工作模式: Bio、Nio和Apr 工作原理分别为
Bio(Blocking I/O):默认工作模式 阻塞式I/O操作 没有任何优化技术处理 性能比较低
Nio(New I/O or Non-Blocking):非阻塞式I/O操作 有BIO更好的并发处理性能
Apr(apache portable runtime,apache可移植运行库):首选工作模式 主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库
Tomcat利用基于APR库Tomcat-native来实现操作系统级别控制 提供一种优化技术和非阻塞式I/O操作 大大提高并发液庆握处理能力
但是需要安装APR和Tomcat-native库
Java性能问题主要来自于jvm jvm GC也比较复杂
1、jvm内存划分为年轻代(Young Generation)、年老代 Old Generation)、永久代(Permanent Generation)
2、年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组成。Eden区占大容量,Survivor两个区占小容量,默认8:2
3、堆内存Heap=年轻代+年老代 非堆内存=永久代
4、堆内存用途:存闹庆放的是对象 垃圾收集器就是收集这些对象的 然后根据GC算法回收
5、非堆内存用途:JVM本身使用 存放一些类型 方法 常量 属性等
6、年轻代:新生成的对象首选放到年轻代的E区中 当E区满时 经过GC后 还存活的对象被复制到Survivor区的FromSpace中 如果survivor区满
会再被复制到survivor区的ToSpace区 如果还有存活的对象 会再被复制到老年代
7、老年代:在年轻代中经过GC后还存活的对象会被复制到老年代中 当老年代空间不足时 jvm会对老年代进行完全的垃圾回收(Full GC)
如果GC后 还是无法存放从survivor区复制过来的对象 就会出现OOM
8、永久代:也称为方法区 存放静态类型数据 比如类 方法 属性等
垃圾回收算法
1、标记 清除
2、复制
3、标记 整理
垃圾收集器
单线程/多线程收集器
GMS收集器
JAVA_OPTS=”-server -Xms1024m -Xmx1536m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+UseParallelGCThreads=8 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:-PrintGC -XX:-PrintGCDetails -XX:-PrintGCTimeStamps -Xloggc:../logs/gc.log”
参数 描述
-Xms 堆内存初始大小 单位M、G
-Xmx 堆内存更大允许大小 一般不要大于物理内存的80%
-XX:PermSize 非堆内存初始大小 一般应用设置初始化200M 更大1024M就够了
-XX:MaxPermSize 非堆内存更大允许值
-XX:+UseParallelGCThreads=8 并行收集器线程数 同时有多少个线程进行垃圾回收 一般与CPU数量相等
-XX:+UseParalle101dGC 指定老年代为并行收集
-XX:+UseConcMarkSweepGC C收集器
-XX:+UseCMSCCompactAtFullCollection 开启内存空间压缩和整理 防止过多内存碎片
-XX:CMSFullGCsBeforeCompaction=0 表示多少次Full GC后开始压缩和整理 0表示每次Full GC后立即执行压缩和整理
-XX:CMSInitiatingOccupancyFracetion=80% 表示老年代内存空间使用80%时开始执行CMS收集 防止过多的Full GC
注意:不是jvm内存设置越大越好 具体还是根据项目对象实际占内存大小而定 可以通过java自带的分析工具来查看
如果设置过大 会增加回收实际 从而增加暂停应用时间
gzip压缩作用:节省服务器流量和提高网站访问速度 客户端请求服务器资源后 服务器将资源文件压缩 再返回给客户端 有客户端的浏览器负责压缩并浏览
Apache和Tomcat结合
由于Tomcat处理静态文件能力远远不足Apache 所有用Apache处理静态文件 Tomcat负责处理jsp
session会话的保持
TomcatSessionID持久化三种方法
session粘性:通过浏览器cookie绑定sessionID 通过sticky模式将同一session请求分片到同一Tomcat上
session复制:tomcat通过广播形式将session同步到其它Tomcat节点 并且Linux下要手动开启开放广播地址 不宜后端节点过多
session保持数据库(memcache redis):将sessionID保存在共享的数据库中
OOM异常的几个原因
老年代内存不足:java.lang.OutOfMemoryError:Javaheapspace
永久代内存不足:java.lang.OutOfMemoryError:PermGenspace
代码bug 占用内存无法及时回收
web服务器和数据库服务器(物理上分开),为什么tomcat的jsp网页打开速度慢
你如果直接用jdbc,每次数据库操作都是open connection, close connection,是很消耗资源的。默认的仿裂连接池不知道你指的是什么,tomcat自带的那个?速度非常的慢的话,你可以写个测试的jsp,里面不要加访问数据库陆大坦的操作,然后看下访问速度。如果这个测试的jsp速度也慢,那么就不是数据库问题,是线路问早桐题了。
使用单一的connection实例。
建议你用JNDI方式来管理connection pool
关于tomcat服务器 启动速度的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。