一般来说,认为优化tomcat 服务器有两个1环节
第一个环节,增加jvm 内存的配置
vi catalina.sh
插入如下内容
----------------------------------------
#
# -Xms -Xmx
#
插入如下内容
----------------------------------------
#
# -Xms -Xmx
#
JAVA_OPTS='-Xms256m -Xmx512m'
----------------------------------------
----------------------------------------
第二个环节,在server.xml中
<Connector port="8080"
maxThreads="3000" minSpareThreads="250" maxSpareThreads="4000"
enableLookups="false" redirectPort="8443" acceptCount="1"
disableUploadTimeout="true"
/>
maxThreads="3000" minSpareThreads="250" maxSpareThreads="4000"
enableLookups="false" redirectPort="8443" acceptCount="1"
disableUploadTimeout="true"
/>
具体数字可根据服务器的不同作适当调整
但是今天早上收到同事的mail,tomcat 抛出很多java.net.SocketException: Too many open files
经查
#ulimit - a
[root@web6 logs]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 32767
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@web6 logs]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 32767
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,
[root@M31 logs]# lsof -p 15283|wc -l
[root@M31 logs]# lsof -p 15283|wc -l
1223
超过了1024的限制
超过了1024的限制
在/etc/profile 中添加
ulimit -n 4096