Tomcat本身不能直接在计算机上运行
![](/icons/99563dou.gif)
需要依赖于硬件基础的上
![](/icons/99563de.gif)
操作系统和
![](/icons/99563yi.gif)
个java虚拟机
![](/icons/99563dou2.gif)
您可以选择自己
![](/icons/99563de.gif)
需要选择区别
![](/icons/99563de.gif)
操作系统和对应
![](/icons/99563de.gif)
JDK
![](/icons/99563de.gif)
版本(只要是符合Sun发布
![](/icons/99563de.gif)
Java规范标准
![](/icons/99563de.gif)
)
![](/icons/99563dou.gif)
但我们推荐您使用Sun公司发布
![](/icons/99563de.gif)
JDK
![](/icons/99563dou2.gif)
确保您所使用
![](/icons/99563de.gif)
版本是最新
![](/icons/99563de.gif)
![](/icons/99563dou.gif)
![](/icons/99563yinwei.gif)
Sun公司和其它
![](/icons/99563yi.gif)
些公司
![](/icons/99563yi.gif)
直在为提高性能而对java虚拟机做
![](/icons/99563yi.gif)
些升级改进
![](/icons/99563dou2.gif)
![](/icons/99563yi.gif)
些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%
![](/icons/99563dou2.gif)
可以给Java虚拟机设置使用
![](/icons/99563de.gif)
内存
![](/icons/99563dou.gif)
但是如果你
![](/icons/99563de.gif)
选择不对
![](/icons/99563de.gif)
话
![](/icons/99563dou.gif)
虚拟机不会补偿
![](/icons/99563dou2.gif)
可通过命令行
![](/icons/99563de.gif)
方式改变虚拟机使用内存
![](/icons/99563de.gif)
大小
![](/icons/99563dou2.gif)
如下表所示有两个参数用来设置虚拟机使用内存
![](/icons/99563de.gif)
大小
![](/icons/99563dou2.gif)
参数
描述
-Xms
JVM
![](/icons/99563chushi.gif)
化堆
![](/icons/99563de.gif)
大小
-Xmx
JVM堆
![](/icons/99563de.gif)
最大值
这两个值
![](/icons/99563de.gif)
大小
![](/icons/99563yi.gif)
般根据需要进行设置
![](/icons/99563dou2.gif)
![](/icons/99563chushi.gif)
化堆
![](/icons/99563de.gif)
大小执行了虚拟机在启动时向系统申请
![](/icons/99563de.gif)
内存
![](/icons/99563de.gif)
大小
![](/icons/99563dou2.gif)
![](/icons/99563yi.gif)
般而言
![](/icons/99563dou.gif)
这个参数不重要
![](/icons/99563dou2.gif)
但是有
![](/icons/99563de.gif)
应用
![](/icons/99563chengxu.gif)
在大负载
![](/icons/99563de.gif)
情况下会急剧地占用更多
![](/icons/99563de.gif)
内存
![](/icons/99563dou.gif)
此时这个参数就是显得非常重要
![](/icons/99563dou.gif)
如果虚拟机启动时设置使用
![](/icons/99563de.gif)
内存比较小而在这种情况下有许多对象进行
![](/icons/99563chushi.gif)
化
![](/icons/99563dou.gif)
虚拟机就必须重复地增加内存来满足使用
![](/icons/99563dou2.gif)
由于这种原因
![](/icons/99563dou.gif)
我们
![](/icons/99563yi.gif)
般把-Xms和-Xmx设为
![](/icons/99563yi.gif)
样大
![](/icons/99563dou.gif)
而堆
![](/icons/99563de.gif)
最大值受限于系统使用
![](/icons/99563de.gif)
物理内存
![](/icons/99563dou2.gif)
![](/icons/99563yi.gif)
般使用数据量较大
![](/icons/99563de.gif)
应用
![](/icons/99563chengxu.gif)
会使用持久对象
![](/icons/99563dou.gif)
内存使用有可能迅速地增长
![](/icons/99563dou2.gif)
当应用
![](/icons/99563chengxu.gif)
需要
![](/icons/99563de.gif)
内存超出堆
![](/icons/99563de.gif)
最大值时虚拟机就会提示内存溢出
![](/icons/99563dou.gif)
并且导致应用服务崩溃
![](/icons/99563dou2.gif)
因此
![](/icons/99563yi.gif)
般建议堆
![](/icons/99563de.gif)
最大值设置为可用内存
![](/icons/99563de.gif)
最大值
![](/icons/99563de.gif)
80%
![](/icons/99563dou2.gif)
Tomcat默认可以使用
![](/icons/99563de.gif)
内存为128MB
![](/icons/99563dou.gif)
在较大型
![](/icons/99563de.gif)
应用项目中
![](/icons/99563dou.gif)
这点内存是不够
![](/icons/99563de.gif)
![](/icons/99563dou.gif)
需要调大
![](/icons/99563dou2.gif)
Windows下
![](/icons/99563dou.gif)
在文件/bin/catalina.bat
![](/icons/99563dou.gif)
Unix下
![](/icons/99563dou.gif)
在文件/bin/catalina.sh
![](/icons/99563de.gif)
前面
![](/icons/99563dou.gif)
增加如下设置:
JAVA_OPTS='-Xms【
![](/icons/99563chushi.gif)
化内存大小】 -Xmx【可以使用
![](/icons/99563de.gif)
最大内存】'
需要把这个两个参数值调大
![](/icons/99563dou2.gif)
例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示
![](/icons/99563chushi.gif)
化内存为256MB
![](/icons/99563dou.gif)
可以使用
![](/icons/99563de.gif)
最大内存为512MB
![](/icons/99563dou2.gif)
另外需要考虑
![](/icons/99563de.gif)
是Java提供
![](/icons/99563de.gif)
垃圾回收机制
![](/icons/99563dou2.gif)
虚拟机
![](/icons/99563de.gif)
堆大小决定了虚拟机花费在收集垃圾上
![](/icons/99563de.gif)
时间和频度
![](/icons/99563dou2.gif)
收集垃圾可以接受
![](/icons/99563de.gif)
速度和应用有关
![](/icons/99563dou.gif)
应该通过分析实际
![](/icons/99563de.gif)
垃圾收集
![](/icons/99563de.gif)
时间和频率来调整
![](/icons/99563dou2.gif)
如果堆
![](/icons/99563de.gif)
大小很大
![](/icons/99563dou.gif)
那么完全垃圾收集就会很慢
![](/icons/99563dou.gif)
但是频度会降低
![](/icons/99563dou2.gif)
如果你把堆
![](/icons/99563de.gif)
大小和内存
![](/icons/99563de.gif)
需要
![](/icons/99563yi.gif)
致
![](/icons/99563dou.gif)
完全收集就很快
![](/icons/99563dou.gif)
但是会更加频繁
![](/icons/99563dou2.gif)
调整堆大小
![](/icons/99563de.gif)
![](/icons/99563de.gif)
目
![](/icons/99563de.gif)
是最小化垃圾收集
![](/icons/99563de.gif)
时间
![](/icons/99563dou.gif)
以在特定
![](/icons/99563de.gif)
时间内最大化处理客户
![](/icons/99563de.gif)
请求
![](/icons/99563dou2.gif)
在基准测试
![](/icons/99563de.gif)
时候
![](/icons/99563dou.gif)
为保证最好
![](/icons/99563de.gif)
性能
![](/icons/99563dou.gif)
要把堆
![](/icons/99563de.gif)
大小设大
![](/icons/99563dou.gif)
保证垃圾收集不在整个基准测试
![](/icons/99563de.gif)
过程中出现
![](/icons/99563dou2.gif)
如果系统花费很多
![](/icons/99563de.gif)
时间收集垃圾
![](/icons/99563dou.gif)
请减小堆大小
![](/icons/99563dou2.gif)
![](/icons/99563yi.gif)
次完全
![](/icons/99563de.gif)
垃圾收集应该不超过 3-5 秒
![](/icons/99563dou2.gif)
如果垃圾收集成为瓶颈
![](/icons/99563dou.gif)
那么需要指定代
![](/icons/99563de.gif)
大小
![](/icons/99563dou.gif)
检查垃圾收集
![](/icons/99563de.gif)
详细输出
![](/icons/99563dou.gif)
研究 垃圾收集参数对性能
![](/icons/99563de.gif)
影响
![](/icons/99563dou2.gif)
![](/icons/99563yi.gif)
般说来
![](/icons/99563dou.gif)
你应该使用物理内存
![](/icons/99563de.gif)
80% 作为堆大小
![](/icons/99563dou2.gif)
当增加处理器时
![](/icons/99563dou.gif)
记得增加内存
![](/icons/99563dou.gif)
![](/icons/99563yinwei.gif)
分配可以并行进行
![](/icons/99563dou.gif)
而垃圾收集不是并行
![](/icons/99563de.gif)
![](/icons/99563dou2.gif)
Tomcat 5常用优化和配置
1、JDK内存优化:
Tomcat默认可以使用
![](/icons/99563de.gif)
内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat
![](/icons/99563dou.gif)
Unix下
![](/icons/99563dou.gif)
在文件{tomcat_home}/bin/catalina.sh
![](/icons/99563de.gif)
前面
![](/icons/99563dou.gif)
增加如下设置:
JAVA_OPTS='-Xms[
![](/icons/99563chushi.gif)
化内存大小] -Xmx[可以使用
![](/icons/99563de.gif)
最大内存]
![](/icons/99563yi.gif)
般说来
![](/icons/99563dou.gif)
你应该使用物理内存
![](/icons/99563de.gif)
80% 作为堆大小
![](/icons/99563dou2.gif)
2、连接器优化:
在tomcat配置文件server.xml中
![](/icons/99563de.gif)
配置中
![](/icons/99563dou.gif)
和连接数相关
![](/icons/99563de.gif)
参数有:
maxThreads:
Tomcat使用线程来处理接收
![](/icons/99563de.gif)
每个请求
![](/icons/99563dou2.gif)
这个值表示Tomcat可创建
![](/icons/99563de.gif)
最大
![](/icons/99563de.gif)
线程数
![](/icons/99563dou2.gif)
默认值200
![](/icons/99563dou2.gif)
acceptCount:
指定当所有可以使用
![](/icons/99563de.gif)
处理请求
![](/icons/99563de.gif)
线程数都被使用时
![](/icons/99563dou.gif)
可以放到处理队列中
![](/icons/99563de.gif)
请求数
![](/icons/99563dou.gif)
超过这个数
![](/icons/99563de.gif)
请求将不予处理
![](/icons/99563dou2.gif)
默认值10
![](/icons/99563dou2.gif)
minSpareThreads:
Tomcat
![](/icons/99563chushi.gif)
化时创建
![](/icons/99563de.gif)
线程数
![](/icons/99563dou2.gif)
默认值4
![](/icons/99563dou2.gif)
maxSpareThreads:
![](/icons/99563yi.gif)
旦创建
![](/icons/99563de.gif)
线程超过这个值
![](/icons/99563dou.gif)
Tomcat就会关闭不再需要
![](/icons/99563de.gif)
![](/icons/99563socket.gif)
线程
![](/icons/99563dou2.gif)
默认值50
![](/icons/99563dou2.gif)
enableLookups:
是否反查域名
![](/icons/99563dou.gif)
默认值为true
![](/icons/99563dou2.gif)
为了提高处理能力
![](/icons/99563dou.gif)
应设置为false
connnectionTimeout:
网络连接超时
![](/icons/99563dou.gif)
默认值60000
![](/icons/99563dou.gif)
单位:毫秒
![](/icons/99563dou2.gif)
设置为0表示永不超时
![](/icons/99563dou.gif)
这样设置有隐患
![](/icons/99563de.gif)
![](/icons/99563dou2.gif)
通常可设置为30000毫秒
![](/icons/99563dou2.gif)
maxKeepAliveRequests:
保持请求数量
![](/icons/99563dou.gif)
默认值100
![](/icons/99563dou2.gif)
bufferSize:
输入流缓冲大小
![](/icons/99563dou.gif)
默认值2048
![](/icons/99563byte.gif)
s
![](/icons/99563dou2.gif)
compression:
压缩传输
![](/icons/99563dou.gif)
取值on/off/force
![](/icons/99563dou.gif)
默认值off
![](/icons/99563dou2.gif)
其中和最大连接数相关
![](/icons/99563de.gif)
参数为maxThreads和acceptCount
![](/icons/99563dou2.gif)
如果要加大并发连接数
![](/icons/99563dou.gif)
应同时加大这两个参数
![](/icons/99563dou2.gif)
web server允许
![](/icons/99563de.gif)
最大连接数还受制于操作系统
![](/icons/99563de.gif)
内核参数设置
![](/icons/99563dou.gif)
通常Windows是2000个左右
![](/icons/99563dou.gif)
Linux是1000个左右
![](/icons/99563dou2.gif)
3、tomcat中如何禁止和允许列目录下
![](/icons/99563de.gif)
文件
在{tomcat_home}/conf/web.xml中
![](/icons/99563dou.gif)
把listings参数设置成false即可
![](/icons/99563dou.gif)
如下:
<servlet>
...
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
...
</servlet>
4、tomcat中如何禁止和允许主机或IP地址访问
<Host name="localhost" ...>
...
<Valve
Name="org.apache.catalina.valves.RemoteHostValve"
allow="*.mycompany.com,www.yourcompany.com"/>
<Valve
Name="org.apache.catalina.valves.RemoteAddrValve"
deny="192.168.1.*"/>
...
</Host>
这是我们服务器
![](/icons/99563de.gif)
配置
![](/icons/99563dou.gif)
具体文件不能给你
![](/icons/99563dou.gif)
![](/icons/99563yinwei.gif)
涉及到公司机密
![](/icons/99563dou.gif)
所以那
![](/icons/99563yi.gif)
行我给你
![](/icons/99563dou.gif)
我拷贝下来了
JAVA_OPTS='-server -Xms512m -Xmx768m -XX:NewSize=128m -XX:MaxNewSize=192m -XX:SurvivorRatio=8'