tomcat 一堆疑问.

at1998 2003-12-03 03:20:30
tomcat性能调整

兄弟用 tomcat 做了个应用,最近搞的常常死机,我想,应该在系统配置上调整一下。有一些问题,希望有经验的朋友可以指点

指点。服务器的配置 是 windows 2000 server PIII550 双 CPU,512M内存。 Tomcat 4.1.24 Mysql 4.0

现在有以下问题请指教

1、据说,在startup.bat,或者catalina.bat中,加上JAVA_OPTS = Xms256m 这样类似的文字,可以使java heap的大小固定,从而提高服务器的性能。那么请问,这种代码怎么加,加在那个文件中加,请详细说明一下。

2、如果JAVA_OPTS 添加正确,那么tomcat启动之后,所占内存的情况是怎样的。比如说,如果设置了 JAVA_OPTS=-Xms256m -Xmx256m ,那么,在windows2000的任务管理器中,看到的java.exe是不是应该至少为256m?

3、server.xml中的minProcess maxProcess 应该是指并发线程的数量吧。不知道那位仁兄有经验,tomcat能响应的并发线程到底能多少?我总感觉即便是把这个maxProcess 改成1000,2000,也不会真的能响应到这么多吧。

4、关于tomcat性能调整的问题,不知道还有没有更好的建议,兄弟洗耳恭听。(不必建议采用什么weblogic,websphere之类的商业应用服务器了,如果采用这些软件,我也不必这么罗嗦问这样的问题了,兄弟只是想经过研究,能把tomcat的潜力发挥出来)

5、本来,tomcat常出现out of memory的问题,导致死机,out of memory这样的情况,如果用设置heap大小的方式,应该可以解决。可是,现在偶把偶的连接方式改为用连接池来连接,out of memory到是不出现了。可是tomcat还是会莫名其妙死掉,而且,tomcat的管理台里并没有任何的异常。但是log目录,却会有个上百M的连接池日志文件。 这种情况应该怎样调整呢?

6、resin怎么样?偶看过篇介绍,说resin可以比tomcat快三倍,偶不知道这样的数据从哪儿来的。哪位用过resin的仁兄能谈谈经验呢?偶看tomcat的安装文件有8M左右,不带jre的。而resin3.0 却只有不到5M,心里就有点不明白。5M的东西,能做到比tomcat快那么多吗?而且,resin好象不支持MS SQL Server 2000的连接池对吧。

7、关于商业应用服务器,不知道有没有朋友正在用的。有没有用D版的呢?BEA,IBM 没找过什么麻烦吧。偶对oracle的9iAS到比较熟悉,有用9ias,oc4j的,我们可以交流一下经验。


//-------------------------------------------------------

问另外一个问题,偶用JB做了个java application。很简单。做完后生成一个可执行的jar文件。执行的时候,会生成一个JFrame

,这个JFrame上有个JTextArea,用来显示些程序运行的信息。现在奇怪的是,在某些机器上,这个jar运行正常。但是在某些机器

上,这个JFrame就无法显示出来。但是从2000的任务管理器中看,这个jar确实是已经在运行。有人遇到过类似的问题吗?给点

提示好么? :)

兄弟现在的可用分12000多了,很可惜,一次提问只能100分,呵呵,另外再加吧,不食言。^_^
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandyde2 2003-12-04
  • 打赏
  • 举报
回复
sry.. miss a minus..

JAVA_OPTS = "-Xms128m"
JAVA_OPTS = "-Xmx256m"
at1998 2003-12-04
  • 打赏
  • 举报
回复
为什么我按照您说的,填写了之后。tomcat反而无法启动了?闪了一下,就关闭了。
sandyde2 2003-12-03
  • 打赏
  • 举报
回复
Q3.

It is up to ur resource. Suppose you just have
512MB memory for a middle size application which
has a xms256MB and xmx512MB(all), if 1000
processes, your memory would be already exhausted.
then in the client side u will get exception like
no enough memory (or u could get it from
catalina.log), which means u have to append more
memory on ur mainboard slot.

once u get enough memory, u said u got 2 processors.
well, let's assume u get endless memory :)
if there are 1000 processes, will ur cpu be fast
enough? hence, cpu would be the consequent problem.
sandyde2 2003-12-03
  • 打赏
  • 举报
回复
Q2.

JAVA_OPTS=-Xms256m -Xmx256m

I prefer to write it in two lines
JAVA_OPTS="Xms256m"
JAVA_OPTS="Xmx256m"

ya, after startup tomcat, it passes
maximal 256MB memory to java virtual
machine.. however, what's the sense
u setup the two parameters the same?
It makes xmx256m no sense. Because
you already set the minimal=startup
memory to 256MB. I prefer u set 128MB
for xms or whatever a small ammount,
so that the part of the JVM would
not always consume 256MB memory since
it starts up which is obviously not
a wise choice.
sandyde2 2003-12-03
  • 打赏
  • 举报
回复
just answer ur first question first..
in ur startup.bat file, after u setup
JAVA_HOME, append the followed line

rem this means startup memory 256MB, not case sensitive
rem only define xmx is not enough !!
JAVA_OPTS = "Xms256m"

rem this means maximal memory 512 MB
JAVA_OPTS = "XMX512M"

however, u'd better try it step by step from 64MB,
because you only have 512 MB memory.. too little..
绝对想你所想,超乎想象!够详细,够给力! 目录 1. Jvm内存空间结构是什么样的? 1 程序计数器 1 Java栈 1 本地方法栈 2 堆 2 方法区 3 2. Jvm堆内存的划分结构和优化 3 2.1. 原理 6 2.1.1. 年轻代 6 2.1.2. 年老代 6 2.1.3. 持久代 7 2.2. 参数说明 8 2.3. 疑问解答 9 2.4. 垃圾回收器选择 10 2.4.1. 串行收集器 10 2.4.2. 并行收集器(吞吐量优先) 10 2.4.3. 并发收集器(响应时间优先) 11 2.4.4. 其它垃圾回收参数 11 2.5. 辅助信息参数设置 12 2.6. 关于参数名称等 13 3. JVM服务参数调优实战 14 3.1. 大型网站服务器案例 14 3.2. 内部集成构建服务器案例 15 4. 常量池在jvm的哪个空间里边? 17 5. jvm垃圾回收是什么时候触发的? 17 5.1. 那究竟GC为我们做了什么操作呢? 17 5.1.1. Jvm怎么判断对象可以回收了? 18 5.2. 下面我们来看一下几种垃圾收集算法 18 5.2.1. 在JDK1.2之前,使用的是引用计数器算法, 18 5.2.2. 根搜索算法 19 5.2.3. 引用的分类 19 5.3. 方法区也是会被回收的 20 5.4. 下面我们来逐一介绍一下每个垃圾回收器。 22 5.4.1. 1、 Serial收集器 22 5.4.2. 2、 ParNew收集器 23 5.4.3. 3、 ParallelScavenge 23 5.4.4. 4、 ParallelOld 24 5.4.5. 5、 SerialOld 24 5.4.6. 6、CMS 24 5.4.7. 7、 GarbageFirst(G1 ) 26 6. 常量池如何触发的垃圾回收? 28 7. 垃圾回收从哪里开始检测树进行回收?根节点是什么? 28 7.1. 目前java中可作为GC Root的对象有 29 8. Redis怎么判断对象可以清理了? 29 9. Redis怎么提高命中率? 29 10. Finalize中调用垃圾回收方法,再调用方法会回收么? 29 11. Int进行自增操作,如何保证线程安全? 30 12. Int a=1是原子方法,布尔类型进行赋值是原子方法么? 30 12.1. 多线程原子操作的安全性 31 13. Cas怎么实现unsafe? 32 13.1. Unsafe 32 13.2. CAS 32 13.3. 由CAS分析AtomicInteger原理 33 13.4. CAS的缺点 35 14. Map数据结构? 35 14.1. 一、定义 36 14.2. 二、构造函数 36 14.3. 三、数据结构 36 14.4. 四、存储实现:put(key,vlaue) 38 14.5. 五、读取实现:get(key) 41 15. 一百万数据放Arraylist数组,怎么放? 在哪个代? 42 15.1.1. 调整数组容量 42 16. Hashmap和 concurrentHashmap除了线程安全 还有什么区别,put的时候是怎么处理的。 43 17. 数据库组合索引,储存在一个叶子节点还是多个? 44 17.1. 索引的利弊与如何判定,是否需要索引: 44 17.1.1. 索引的好处 44 17.1.2. 索引的弊端 44 17.1.3. 如何判定是否须要创建索引 44 17.2. 复合索引优化 45 17.3. 下面是一些常见的索引限制问题 45 17.3.1. 使用不等于操作符(<>, !=) 45 17.3.2. 使用 is null 或 is not null 45 17.3.3. 使用函数 45 17.3.4. 比较不匹配的数据类型 46 17.4. 关于索引的排序 46 18. 数据库没有orderby默认如何排序。 46 19. 分布式事务如何实现。 46 19.1. 1 事务/分布式事务 47 19.1.1. 1.1 事务 47 19.1.2. 1.2 分布式事务与 XA 规范 47 19.2. 2 两阶段提交协议 47 19.2.1. 2.1 预提交阶段 48 19.2.2. 2.2 提交阶段 48 19.3. 3 分布式事务应用框架 48 19.3.1. 3.1 角色 48 19.3.2. 3.2 交互时序 49 19.3.3. 3.3 关键点 50 19.3.4. 参考 50 20. Jvm底层源码 51 21. 二叉树怎么实现的? 51 22. Executourservice 数据结构。哪种只能执行一个线程。 Cache怎么实现的 fixed线程如果中断,线程回自己销毁么? 51 23. 栅栏的原理和实现。 51 23.1. 1. CyclicBarrier简介 51 23.2. 2. CyclicBarrier数据结构 52 23.3. 3. CyclicBarrier源码分析(基于JDK1.7.0_40) 52 23.3.1. 3.1 构造函数 52 23.3.2. 3.2 等待函数 53 23.4. 4. CyclicBarrier的使用示例 57 23.4.1. 示例1 57 23.4.2. 示例2 59 24. Blockingqueue有几种形式?各自的编码方式。 72 24.1. Queue接口 72 24.2. BlockingQueue接口 73 24.2.1. ArrayBlockingQueue 74 24.2.2. LinkedBlockingQueue 78 24.2.3. LinkedBlockingDeque(双向并发阻塞队列) 84 24.2.4. PriorityBlockingQueue(优先阻塞队列) 85 24.2.5. 总结一下阻塞队列 90 25. Tomcat 如何管理servlet? 90 26. Servlet生命周期 90 27. 没有缓存,如何实现领券并发操作? 92

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧