Tomcat7的配置和优化

刚入职新公司的Web服务器总是故障,需要解决服务器的稳定性来证明自己的能力。

首先查看Tomcat 7的日志文件中有OutOfMemoryError: PermGen space,即永久代(持久栈)内存溢出。这个问题首先看TOMCAT的启动参数,主要是以下两个:

-Xmx:java heap最大值,使用的最大内存

这里我设置为内存减512M

-XX:MaxPermSize:设定最大内存的永久保存区域

这里我设置为2048M(2G,一般不超过最大内存的二分之一)

修改后重启tomcat,第二天又内存溢出了,肯定是代码有问题。查找代码后发现有4处代码使用了数据库连接之后,没有关闭,导致内存泄露。修复之代码之后,然后发布。

没过几天又出问题了,对虚拟机内存分析发现很多阻塞的线程,于是继续优化Tomcat的server.xml文件。网上流传的文章,有些会误导的,参考了Tomcat官方文档才得到正确的配置:

<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="10000"
  keepAliveTimeout="60000"
  acceptorThreadCount="4" maxCookieCount="600"
  maxThreads="600" maxConnections="600"
  minSpareThreads="100" 
  acceptCount="200"
  redirectPort="8443" />

然后Tomcat就一直很稳定了。connectionTimeout连接超时为10秒,acceptorThreadCount接受处理线程数为4(CPU的内核数),maxThreads最大线程数、maxCookieCount最大Cookie数、maxConnections最大连接数这三个值我都设置相同(最大连接数可以设置比线程数大一点),minSpareThreads最小空闲线程(即至少有多少个执行线程处理等待状态,随时可以处理任务),acceptCount(这个是当超出最大线程之后的等待任务数量,之前网上有人说是线程总数量要大于等于最大线程数,我设置过大,导致产生了很多无用的等等线程,默认值是100,其实也可以不用设置)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,394评论 11 349
  • Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒...
    愤怒的_菜鸟阅读 2,143评论 0 24
  • Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒...
    java面试收割机阅读 1,214评论 0 8
  • 家里的烂水果太多了。 我爸:“水果都烂了,你快吃吧!” “嗯,知道了” 我妹:“你在吃啥,我也要……” “这梨子都...
    男神薛阅读 449评论 0 0
  • 文/老晨 温泉在云端目录 温泉在云端 连载十六 第九章 Jason有太多次想说出这句话,但是他总觉得林可怡应该在下...
    老_晨阅读 277评论 0 0