tomcat配置-catalina.sh

 

 

bin文件夹中 catalina.sh 文件中,配置堆栈

设置堆栈大小

  • -server 第一个参数,指定为服务,多核时用
  • -Xms 启动时,初始堆大小;没有配置时,从最小逐步增加到最大值
  • -Xmx运行时分配的最大堆大小;默认64M-Xmn 新生代堆大小
  • -Xss每个线程栈大小
  • -Xx:PermSize 初始化非堆内存大小
  • -XX:MaxPermSize永久代(非堆)最大内存大小
  • -XX:MaxNewSize 新生代最大大小

设置垃圾回收统计:

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:filename 把gc信息写入到某个文件下,有IO操作


设置并行收集器:

设置并行收集器收集时使用的CPU数 -XX:ParallelGCThreads=n

并行收集线程数 :XX:MaxGCPauseMilis=n

设置并行收集最大暂停时间-XXGCTimeRatio=n

设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)

设置并发收集器:

设置为增量模式。适用于单CPU情况: -XX:+CMSIncrementalMode

设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数 :-XX:ParallelGCThreads=n


tomcat配置-server.xml

conf 文件夹中 server.xml 文件 修改协议端口的

Tomcat 中最顶层的是 server,代表整个服务器,一个 server 可以包含至少一个service,每个 service 可以包 含多个 connector 和一个 container。Connector 用于处理连接相关的事情,并提供 Socket 与 Request 和 Response 相关的转化;Container用于封装和管理 Servlet,以及具体处理 Request 请求;多个 connector 就可以配置多种类型连接,如 httpl https


Connector在处理HTTP请求时,会使用不同的protocol,典型的有:

  • BlO,BlockinalO阻塞10(tomcat7支持,8支持NIO2,8.59去掉了BIO); 默认值为maxThreads值
  • NIO: Non-blockinglO非阻塞IO;默认值: 10000
  • APR:ApachePortableRuntime Apache可移植运行库,是高并发的首选模式,默认值: 8192 需要安装apr、apr-utils、tomcat-native包

protocol默认是HTTP/1.1,不同版本,会自动选择上面的模式(APR模式需要有包才会自动选择)


Connector重要的参数:

  • acceptCount:能接收的队列长度队列满了,再有连接就会被拒绝。默认: 100
  • maxConnections: 任意时刻能接收和处理的最大连接数。达到最大值,就会阻塞accept连接。如果值设置为-1,则连接数不受限制。
  • maxThreads:请求出来线程的最大数量。默认值:200

当链接不够时 需要配置server.xml的 connect 参数

  • connectionTimeout 连接超时时间,单位毫秒
  • maxThreads 最大并发连接数
  • acceptCount 最大可接受的排队数量
  • minSpareThreads:tomcat 初始化默认的最小创建的线程数
  • maxSpareThreads:这个参数标识一旦创建的线程数量超过这个值Tomcat就会关闭不活动的线程

logs 文件夹存放日志

webapps文件夹 放置项目。。


tomcat性能调优方向

内存溢出时调节 catalina.bat\catalina.sh

java.lang.OutOfMemoryError: Java heap space

java.lang.OutOfMemoryError: PermGen space

调节堆栈大小,但是其大小是有限制的,不能无限制调


连接数不够时

修改 server.xml 的connect 参数