Articles of tomcat

在跨多个Amazon EC2实例维护会话时遇到问题

我的一个网站是通过Amazon EC2服务托pipe的。 当站点面临沉重的负载时,问题就开始发生,而这又会通过AutoScaling产生一个新的EC2实例。 这是好的,但问题是当这些实例被杀害(由于缺乏负载)会话信息也丢失,因此迫使用户重新login到站点。 解决这个问题的最好方法是什么? 我已经看了Memcached会话pipe理器和它工作正常的粘滞会话,但导致问题,当我尝试使用非粘性会话,因为我做了很多并行请求到我的服务器。 我目前的服务器是Apache + Tomcat 任何指针都有帮助。 谢谢。 ( 从webmasters.stackexchange交叉post )

如何扩展支持长轮询的Web服务器

我打算添加更多Web应用程序服务器来支持日益增长的客户端,部署HAproxy和Keepalived以实现负载平衡和高可用性。 我的服务器使用情况具有以下特征: 作业不是CPU密集型的。 消息是小于100个字符的JSON文本。 用户将通过客户端设备Y发送消息到服务器。通常每天4-5个消息 客户端设备X持续等待来自服务器的消息 如果消息在服务器上可用,则客户端设备X必须能够在2秒内得到它。 否则,此消息已过时。 出于这样的原因, 客户端设备X正在使用长轮询HTTP连接来响应。 每个连接将持续5秒钟并重新连接。 客户端设备X和客户端设备Y连接到同一台服务器,因此X和Y可以轻松发送消息 题 如果有超过60,000个客户端设备X连接到服务器,则我的负载均衡器或路由器将用尽TCP端口。 扩大20,000名用户的最佳方式是什么? 我的服务器在Ubuntu服务器上运行,使用tomcat和Java Servlet。

mod_proxy_ajp(70007)指定的超时已过期:ajp_ilink_receive()无法接收标题

我正在使用mod_proxy_ajp与Tomcat,我收到以下错误: (70007)指定的超时已过期:ajp_ilink_receive()无法接收标题 我该如何解决?

Apache + Tomcat VS独立的Tomcat或GlassFish

我正在设置一个Debian服务器来为Java Web应用程序提供服务。 我已经做了好几个星期的研究了。 Tomcat的网站上说,如果你不是集群,最好使用独立的Tomcat来提高速度。 但是,我看到很多人build议使用Apache + Tomcat为您提供更好的安全性和防御攻击。 请假定该进程将作为非特权用户在端口80上运行。 我会假设,如果你在服务器前面运行防火墙,Tomcat应该没问题。 但是,如果您只是想使用Linux防火墙运行暴露的Web服务器,那么最好的select是什么? 或者,也许有人可以推荐另一个开源Web服务器。 我试图保持解决scheme尽可能轻,因为这些webapps将在容器中运行。 所有意见欢迎和重视。

通过nginx代理将哈德森映射到子域

我现在正在尝试将nginx设置为Hudson的反向代理,以便可以访问 http://build.example.com 直。 我已经在Tomcat上安装了Hudson,并validation了我可以访问Hudson http://127.0.0.1:8080/hudson 在http://build.example.com/hudson上访问hudson是非常简单的。 但是,当我试图设置代理重新映射/ hudson目录,事情开始出错。 没有正在加载的CSS或图像文件。 快速查看nginx访问日志告诉我,正在对/ hudson或/ hudson / static资源进行大量请求。 这些请求没有正确转发(或重写)到Tomcat。 但是经过几个小时的挖掘,我对如何解决这个简单的问题感到迷茫。 我正在使用的nginx设置看起来像 server { listen 80; server_name build.example.com; location / { proxy_pass http://127.0.0.1:8080/hudson; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 有人可以解释一下吗? 安装起来非常简单,但我似乎无法在networking上的任何地方find解决scheme。 更新 对所有花时间回答这个问题的人表示衷心的感谢。 在尝试了各种解决scheme之后,我认为处理这个特定问题最直接的方法是要么… A)保持独立如@VonCbuild议,让它留在一个子目录。 这是直截了当的,我们可以肯定,没有什么会打破。 要么… B)将应用程序部署到tomcat webapp目录的根目录如果你想用tomcat安装多个webapps,这可能不是最好的做法。 但是pipe理员可能想要设置一个单独的tomcat安装,只是为了运行Hudson / Jenkins。 Tomcat不能像不同的用户一样运行不同的托pipe应用程序,任何为CI设置Hudson / Jenkins的人都可能希望以特定的用户身份运行它(例如“构build”)。 […]

需要将Tomcat5configuration为侦听所有接口

我在CentOS上安装了tomcat5 。 它被configuration为仅从127.0.0.1收听。 如何configurationTomcat从所有接口侦听。 连接器端口configuration如下: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" address="0.0.0.0" redirectPort="8443" />

Tomcat-如何检查当前正在使用的内存设置

我已经使用Server 2008和IIS 7build立了一个Tomcat服务器。 我怎么知道JAVA_OPTS环境variables是否被实际使用? 我以前听说过,为了使JAVA_OPTS环境variables能够被使用,我必须编辑service.bat文件,但是如何判断它是否成功呢? 我一直无法确定是否有方法在日志中查看这些数据,或者是其他更加定量的数据。 我能想到的唯一方法就是编辑这个variables,试着去判断这个variables是否有差异。 我将JAVA_OPTS设置为以下内容: -server -Xmx1k -Xms1k-Xmn1k -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1k -XX:MaxPermSize=1k 另外,我发现文档说在service.bat中更改以下行: "%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" –JvmMs 128 –JvmMx 256 至: "%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" %JAVA_OPTS% 我运行命令时没有错误 service install ServiceName 到目前为止,似乎一切运行的速度都像以前一样快,我重新安装了更改的内存设置的服务,使我认为JAVA_OPTS不影响任何东西。 对不起,如果这是一个广泛的问题,但我还没有find一个很好的结果,关于在后端实际发生的事情。 有人可以解释一下吗?

wheezy-backports中的tomcat8失败,并显示configtest.sh

我从wheezy-backports安装了tomcat8软件包。 我使用默认/未经修改的安装与以下期望: 我使用Oracle Java 8 JDK 在/etc/default/tomcat8中join: JAVA_HOME=/usr/lib/jvm/java-8-oracle 我可以启动/停止tomcat。 但是会显示很多警告。 选中/usr/share/tomcat8/bin/configtest.sh ,输出结果为: Using CATALINA_BASE: /usr/share/tomcat8 Using CATALINA_HOME: /usr/share/tomcat8 Using CATALINA_TMPDIR: /usr/share/tomcat8/temp Using JRE_HOME: /usr Using CLASSPATH: /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile WARNING: Problem with directory [/usr/share/tomcat8/common/classes], exists: [false], isDirectory: [false], canRead: [false] Jan 10, 2015 4:55:40 PM org.apache.catalina.startup.ClassLoaderFactory validateFile WARNING: Problem with […]

哪个JVM最适合Tomcat?

我有Tomcat 6.0并运行。 我去调整内存大小,并意识到我已经运行在Sun JDK 1.6 客户端 JVM上。 我没有安装Sun服务器JVM: C:\>java -client -version java version "1.6.0_16" Java(TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode, sharing) C:\>java -server -version Error: no `server' JVM at `C:\appl\java\jre6u16\bin\server\jvm.dll'. 澄清:我知道如何将Tomcat中的JVM从客户端切换到服务器。 我只需要select最合适的服务器JVM。 我会注意到客户端和服务器JVM之间的巨大差异? 如果我需要Sun服务器JVM,是否必须重新安装整个JDK? 是否有其他免费的服务器替代品,这将有利于运行Tomcat?

如何重新激活禁用的Apache 2.2 AJP连接?

我不使用AJP进行负载平衡; 我有一个Apache 2.2实例,通过AJP代理一些URL到单个 Tomcat 7实例。 当Tomcatclosures时,AJP代理在第一个失败的请求中被禁用,并且在Tomcat恢复时不会重新启用。 是否有可能指示Apache不禁用 AJP连接,即使后端closures,以便代理在后端恢复联机时开始工作? 这里是我的httpd.conf的摘录: ProxyPass /my-web-app ajp://localhost:8009/my-we-app-1.0.2 这里是后端closures时的日志文件: [error] (OS 10061)No connection could be made because the target machine actively refused it. [error] ap_proxy_connect_backend disabling worker for (localhost) [error] proxy: AJP: failed to make connection to backend: localhost