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 参数