一.Tomcat内存优化
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数。
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m -XX:PermSize=512M -XX:MaxNewSize=512m -XX:MaxPermSize=1024m"
JAVA_OPTS参数说明:
-server 启用jdk 的 server 版;
-Xms java虚拟机初始化时的最小内存;
-Xmx java虚拟机可使用的最大内存;
-XX: PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
二.Tomcat并发优化
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="1000" minProcessors="100" maxProcessors="1000" minSpareThreads="100" maxSpareThreads="1000" URIEncoding="utf-8" disableUploadTimeout="ture" maxThreads="1000" />
参数说明:
connectionTimeout - 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
keepAliveTimeout - 长连接最大保持时间(毫秒)。此处为15秒。
maxKeepAliveRequests - 最大长连接个数(1表示禁用,-1表示不限制个数,默认100个。一般设置在100~200之间)
maxHttpHeaderSize - http 请求头信息的最大程度,超过此长度的部分不予处理。一般8K。
URIEncoding - 指定Tomcat 容器的URL 编码格式。
acceptCount - 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认为10个。
disableUploadTimeout - 上传时是否使用超时机制
enableLookups - 是否反查域名,取值为:true 或false。为了提高处理能力,应设置为false
bufferSize - defines the size (in bytes) of the buffer to be provided for input
streams created by this connector. By default, buffers of 2048 bytes are provided.
maxSpareThreads - 最大空闲连接数,一旦创建的线程超过这个值,Tomcat 就会关闭不再需要的socket 线程The default value is 50.
maxThreads - 最多同时处理的连接数,Tomcat 使用线程来处理接收的每个请求。这个值表示Tomcat 可创建的最大的线程数。
minSpareThreads - 最小空闲线程数,Tomcat 初始化时创建的线程数.
minProcessors - 最小空闲连接线程数,用于提高系统处理性能,默认值为10。
三.系统内核参数
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_tw_buckets = 180000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlog = 32768 net.core.somaxconn = 32768 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_syn_retries = 2 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_tw_recycle = 1 #net.ipv4.tcp_tw_len = 1 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_keepalive_time = 5 net.ipv4.tcp_keepalive_probes=2 net.ipv4.tcp_keepalive_intvl=2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog=8192 net.ipv4.tcp_no_metrics_save = 0 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_max_orphans = 3276800 fs.file-max = 9553600 #net.ipv4.netfilter.ip_conntrack_max = 655360 #net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 60 net.ipv4.tcp_max_tw_buckets = 60000 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
ulimit -n 10240
vim /etc/security/limits.conf
* - nofile 1006154