tomcat 3 用户数目较大时出错问题!

houzy 2003-06-26 11:10:09
使用 tomcat 3 作为服务器,在使用用户达到50左右时,服务器cpu占用达到100%,造成用户不能登陆!
请问 tomcat 3 在用户数目上,或者说性能上,是否有这方面的限制或者局限性,
我觉得不应该是程序自身问题,或者请指教如何配置tomcat 的配置,以提高性能?
或者 将 tomcat 3 和 apache ,联合使用,是否能使性能提高,并解决此问题!
...全文
62 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yshen 2003-07-02
  • 打赏
  • 举报
回复
1.所需的软件包

  j2sdk-1_4_1_02-linux-i586.bin(jdk1.4.1)
  Apache2.0.40 (Red Hat Linux8.0自带)
  jakarta-tomcat-4.1.24.tar.gz(tomcat4.1.24)
  jakarta-tomcat-connectors-4.1.24-src.tar.gz(connectors4.1.24)

2.安装所需要软件
 
  (1) 首先将除apache以外的三个文件拷贝到/usr/local目录
   ./j2sdk-1_4_1_02-linux-i586.bin
##将jdk解到local下生成对应的目录
  
(2) tar zxpf jakarta-tomcat-4.1.24.tar.gz
##将tomcat解到local下生成对应的目录

(3) tar zxpf jakarta-tomcat-connectors-4.1.24-src.tar.gz
##将connectors解到local下生成对应的目录

3.设置环境变量

  vi /etc/profile ## 编辑 /etc/profile

在文件结尾加入: ##注意其中的jakarta-tomcat,jdk要设成本机器相对应的目录视版本而定

PATH="$PATH:/usr/local/jakarta-tomcat/bin:/usr/local/jdk/bin:/usr/local/jdk/jre/bin"

JAVA_HOME=/usr/local/jdk
export JAVA_HOME

JRE_HOME=/usr/local/jdk/jre
export JRE_HOME

TOMCAT_HOME=/usr/local/jakarta-tomcat
export TOMCAT_HOME

CLASSPATH=/usr/local/jdk/lib:/usr/local/jdk/jre/lib
export CLASSPATH

4.编译生成mod_webapp.so

  cd /usr/local/jakarta-tomcat-connectors-4.1.24-src/webapp
## 进入指定的目录

  ./support/buildconf.sh
## 生成编译配置文件

  ./configure --with-apxs
## 生成Makefile编译文件

  (插曲:若此时提示找不到apxs,则证明你的Apache在安装的时候,未安装Apache附加的开发包,请下载安装该开发包,则会解决该问题,这个包在RedHat8安装盘的第三张里面,文件名是:httpd-devel-2.0.40-8.i386.rpm)

  make
## 编译生成mod_webapp.so,生成的mod_webapp.so文件在apache-2.0目录中

  把apache-2.0目录中的mod_webapp.so文件复制到目录/usr/lib/httpd/modules
  并检查文件/usr/lib/httpd/modules/mod_webapp.so的属性,应与其它Modules文件属性一致,如果不相同,则使用chmod chgrp chown来修改

5.独立环境的测试

  (1) 测试Java的运行状况,如下命令:
    java -version
    javac -version
    看到版本号则表示JDK安装成功

  (2) 测试Apache的运行状况,如下命令:
    /etc/rc.d/init.d/httpd restart ## 重新启动Apache Server
    使用任意一浏览器,输入服务器地址后回车,应该可以看到Apache的默认主页

  (3) 测试Jakarta-Tomcat的运行状况,如下命令:
进入tomcat安装目录下面的bin目录
    ./startup.sh ## 启动jakarta-tomcat-4.1.24服务
    使用任意一浏览器,输入服务器地址和端口号8080后回车,应该可以看到jakarta-tomcat-4.1.24的默认主页
    例如: http://localhost:8080
    ./shutdown.sh ## 关闭jakarta-tomcat-4.1.24服务

6.整合安装设置

  (1) 修改/etc/httpd/conf/httpd.conf文件
    在# Dynamic Shared Object (DSO) Support之后,添加如下内容
    LoadModule webapp_module modules/mod_webapp.so

  (2) 测试配置和Modules,执行以下命令
    apachectl configtest
    如果出现Syntax OK,则证明Module安装和配置成功了

  (3) 修改/etc/httpd/conf/httpd.conf文件
在文件尾部添加如下内容
WebAppConnection warpConnection warp localhost:8008
WebAppDeploy examples warpConnection /examples/

#如果不希望以http://ip/xxx/这种方式访问你的内容可以修改tomcat中server.xml文件中的ROOT应用
然后再在apache的httpd.conf文件
WebAppConnection warpConnection warp localhost:8008
后面再加一行WebAppDeploy ROOT warpConnection /

  (4) 再次测试配置,执行以下命令
apachectl configtest
如果出现Syntax OK,则证明安装成功
如果出现以下错误信息
Syntax error on line 1038 of /etc/httpd/conf/httpd.conf:
Invalid virtual host name
则修改httpd.conf文件,找到#ServerName所在的行,并在其下面加入如下内容即可
ServerName localhost:8008 # 制定服务器的名称和端口,注意端口是8008,而不是8080,因为8008端口是专门用来给mod_webapp封装的

  (5) 检查$CATALINA_HOME/conf/server.xml文件中相关的配置,默认情况下的
相关的信息是被注释掉了,搜索8008,找到<Service name="Tomcat-Apache">那段,把前面的"<!--"和</Service>后面的"-->"都删掉,
这样Tomcat在启动的时候才会初始化

7.整合测试

  重新启动所有服务
    ./shutdown.sh
    ./startup.sh
    /etc/rc.d/init.d/httpd restart

  在浏览器中输入如下地址
    http://服务器IP/examples/jsp/index.html,如果能够显示正常的网页,则安装成功

  在浏览器中输入如下地址
    http://服务器IP/examples/jsp/jsptoserv/jsptoservlet.jsp如果能够显示正常的网页和时间,则jsp和Servlet安装成功





seasun2k 2003-06-30
  • 打赏
  • 举报
回复
tomcat实现了简单的web server,因此对http的请求性能较低,一般使用:Apache+tomcat
huqile 2003-06-30
  • 打赏
  • 举报
回复
关注,我正在为此问题苦恼。
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承:  继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装:  封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型 封装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double  引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据所指定的缺省值。对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的候你就可以使用StringBuffer。典型地,你可以使用 StringBuffers来动态构造字符数据。 8、运行异常与一般异常有何异同?  异常表示程序运行过程中可能出现的非正常状态,运行异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行异常,但是并不要求必须声明抛出未被捕获的运行异常。 9、说出Servlet的生命周期,并说出Servlet和CGI的区别。  Servlet被服务器实例化后,容器运行其init方法,请求到达运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的候调用其destroy方法。 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。 10、说出ArrayList,Vector, LinkedList的存储性能和特性  ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 EJB包括Ses

5,658

社区成员

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

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