我有一个脚本,将自动停止服务器,并重新启动它在相同的端口/ IP地址。 我注意到,有些早晨服务器不能成功重启,因为它得到了Java BindExceptions。 停止服务和重新启动之间有10秒的延迟。 (我发现没有任何延迟几乎总能保证一个BindException,因为启动非常快。) 有没有人在运行Windows Server 2008时遇到BindExceptions,尽pipe他们用合理的(10秒)延迟重新启动服务? 正如我所提到的,它只是偶尔发生。 我可以增加间隔时间,但是如果在尝试绑定新重新启动的服务器之前有办法有条不紊地刷新locking的端口,则这可能是更简单的方法。
我刚刚在带有1G内存的V-Server上安装了Java 7和Jenkins # java -version Error occurred during initialization of VM Could not reserve enough space for object heap Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. 和Ram #free -m total used free shared buffers cached Mem: 1548 1506 41 0 0 1096 -/+ buffers/cache: 409 […]
我试图将我的jira版本从5.1升级到我的testing服务器。 与Windows(64)平台。 所以我下载了jira 6版本的文件夹名称为“atlassian-jira-6.0-m08-standalone”。 然后我在命令提示符bin> start-jira.bat / fg中提到jira,它会抛出下面的错误。 请帮我解决这个错误。 错误:java.lang.AbstractMethodError:org.apache.catalina.connector.CoyoteAdapter.getDomain()Ljava / lang / String;
我目前正在做一个需要穿越NAT的项目,但我似乎遇到了困难。 我有以下设置运行testing: R1,Verizon Fios路由器连接到互联网。 R2,Belkin路由器通过以太网连接到它的WAN口到R1的交换机。 我介绍服务器,通过以太网连接到R1。 R1转发端口6666到我。 A和B,运行客户端软件的计算机通过Wifi连接到R2。 介绍服务器和客户端说明: 当A和B启动客户端时,客户端在端口6666上向外部地址R1(72.82.59.10)发送一个“HelloPacket”。 接收到一个HelloPacket后,服务器首先检查是否已经看到源地址和源端口标识符。 如果不是,则首先将它的对端标识符表(source ip / port)中的每个条目发送给它从其接收到HelloPacket的对等端,然后将其作为新条目存储在其对等表中。 如果有,则重置对等端超时,以便它知道继续将这个对等标识符发送给将来连接的对等端。 在客户端最初将HelloPacket发送到Intro服务器后,如果有已经将自己引入到服务器的对等端,则可以期望从服务器接收名为IntroPackets的数据包。 这些IntroPackets包含对等体的外部和内部IP /端口。 既然对等方知道现有的对等体,那么新连接的对等体就有责任将HelloPacket发送给现有的对等体,让他们知道它的存在。 这是我有麻烦的地方。 我没有足够的声望发布图像,但这里是我在设置的颜色的图表: http : //i.stack.imgur.com/7E5I8.png 这里是事件的顺序和我遇到的问题: 介绍服务器启动并侦听types为“HelloPacket”的UDP数据包 Peer A启动它的客户端,然后将HelloPacket发送到地址/端口上的Intro服务器: 72.82.59.10,6666 介绍服务器接收到HelloPacket,并向其表中添加一个条目,并且不会将任何IntroPackets发送给对等体A,因为表中没有其他对等体。 表A中的条目类似于以下对于A: IP:72.82.59.10,端口:1024 Peer B启动它的客户端,然后将HelloPacket发送到介绍服务器。 介绍服务器接收HelloPacket并向其表中添加条目。 介绍服务器然后发送一个IntroPacket到包含对等体A的地址和端口的新连接的对等体。 介绍服务器的表在这一点上看起来如下所示: 同侪A:72.82.59.10,1024 对等B:72.82.59.10,1025 对等体B接收到IntroPacket,然后尝试向对等体A发送一个hello分组。 第6步是我的devise失败的地方。 Peer A永远不会收到来自Peer B的HelloPacket。据我了解,当路由器收到一个目标端口为1024的数据包时,它将使用它的NAT映射到内部地址和端口。 它是否正确? 我试过运行一个外部程序,只是发送数据报到外部地址和端口映射到客户端A,但这些似乎并没有通过,所以我不认为这是一个超时问题。 我也知道我应该尝试连接到内部地址和端口,看看客户端是否在同一个NAT后面,并计划在未来实现这一点。 而且,在客户端和服务器代码中都使用Go-Back-N可靠地完成所有通信。 问题: 我可以忽略在我的devise中至关重要的东西,或者仅仅是不能简单地理解UDP穿越NAT? 对等体A能够从服务器接收一个数据包而不是对等体B的原因是什么? (由于对等方能够从服务器接收数据包) NAT是否考虑到源地址? 任何input是非常感谢! […]
我正在尝试在Java进程上设置远程JMX监视。 这些是我给JVM启动它的选项: JAVA_OPTS="-server -Xms1G -Xmx1G -XX:MaxPermSize=512m " JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=57011 -Dcom.sun.management.jmxremote.authenticate=false" JMX_OPTS="$JMX_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dfoo.jmx=true -Dfoo.jmx.detailed=true" JMX_OPTS="$JMX_OPTS -Djava.rmi.server.host=192.168.9.121" LOG_OPTS="-Dfoo.logging.type=log4j -DLOGDIR=${SERVERDIR}/logs" ASD_OPTS="-Dfoo.conf.file=file:${PROPFILE} -cp ${CLASSPATH} foo" /usr/bin/nohup ${JAVA_EXE} $JAVA_OPTS $JMX_OPTS $LOG_OPTS $ASD_OPTS 1>${SERVERDIR}/service.log 2>&1 & 我可以在本地使用Jconsole进行连接,但是当我从远程主机连接时,出现以下错误(为简洁起见而剪切) Java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused: <snip> 因此,尽pipe显式声明声明绑定到192.168.9.121(-Djava.rmi.server.host),JMX仍然绑定到远程系统的回送接口。 我发现唯一的解决方法是修改我的/ etc / hosts来设置系统的FQDN,如下所示: 127.0.0.1 localhost localhost.localdomain 192.168.9.121 my.servers.fqdn.com […]
安装程序 我已经设置了一个简单的Nginx服务器,它以JSON格式logging,然后通过Apache Flume传输到S3存储桶。 所有Nginx服务器都会响应Web跟踪像素跟踪并写入日志文件。 一切都很酷。 问题 但是,在这个pipe道级别上处理其他一些处理步骤是很好的: 将查询string参数转换为事件logging中的实际JSON 设置用于跟踪目的的UUID Cookie 增加本地数据库中的某些计数器(最终所有的数据将被处理一个Map / Reduce) 看来我需要一个自定义的Flume接收器来将查询string参数和后端转换为nginx来设置cookie并更新数据库。 在这里有几个系统似乎效率很低,特别是在优化每秒数百个请求的吞吐量时。 可能的解决scheme 我的第一个想法是使用NodeJS,它可以处理所有这些任务(甚至取代nginx?),但是我不喜欢它是单线程的(可能是派生的童工?)。 然后,我想也许应该在Flume代理级别进行处理,Java程序可以处理所有事情(由于Flume是用Java编写的,所以性能优势在这里)? 问题 我是以正确的方式去做这个事情,还是过度地去思考? 您如何build议将所有内容整合到一个或两个过程中?
我想在Windows服务器上安装Java 7 Server SE JRE。 阅读这里的说明: http://docs.oracle.com/javase/7/docs/webnotes/install/windows/server-jre-installation-windows.html 它表示:服务器JRE文件安装在当前目录中名为jdk1.7.0_的目录中。 但是,这个tar文件中有很多东西。 我只想使用jdk1.7.0_下的jre文件夹。 我可以只复制/jdk1.7.0_/jre和它的子文件夹? 在安全性和性能方面,我是否应该注意到下游的影响? 或者除了function丧失之外的其他问题? 最终,我想将Tomcat指向jre / bin / server / jvm.dll。 谢谢!
实际上,我正在研究基于Java / Tomcat的Web应用程序的长时间运行连接。 排除任何内部或应用程序的原因后,我现在是在networking层。 我调查这个问题的原因是,我们在响应时间监控方面似乎有随机高峰。 在调查过程中,我发现这种行为并不是那么随意,而是由某些客户端HTTP请求触发的。 关于这些连接的特殊之处在于,它们都来自相同的IP地址,并且似乎使用了Bluecoat Proxy,因为我通过HTTP标头看到了x-bluecoat。 正如我所说,应用程序本身正常执行,只有连接的结束(从Tomcat的angular度来看)似乎有点延迟。 服务器不直接与客户端通话,而是在F5负载均衡器的后面,这个负载均衡器应该实际caching答案(这可能不会发生,因为接受编码的标识头,实际响应对于缓冲区来说是很大的)。 我得到了一个TCP转储,由于一个不幸的错误,我目前只能看到从LB到应用服务器的包,而不是从应用服务器发送的实际包。 转储在同一TCP / IP连接上包含多个请求,这是由F5完成的连接池所致。 此连接上的最后一个HTTP请求是在我们的日志logging中被标记为长时间运行(925836.442ms)的实际连接。 我看到的是请求数据包,一系列的ACK使我相信应用服务器正在写它的答案,最后是两个FIN,ACK包,后面是RST,ACK是F5发送的最后一个数据包。 从定时的angular度来看,这一切都发生在250ms的过程中,最后一个数据包发送15分钟和13秒,然后我看到应答服务器上的响应日志,这个响应被认为是由Tomcat完成后写入的。 我现在有点想法,并有一些开放的问题: Linux是否有任何理由保持打开一个已经收到RST的连接而不告诉应用层? 是否有其他超时可能导致此行为? 如果这将是TCP重传超时,我会看到来自LB的更多RST。 任何其他的想法,为什么一个封闭的连接线将导致在应用层仍然打开连接? 在应用层(特殊的HTTP请求)中发生的事情如何导致传输层中的重复行为? 也许我完全在错误的轨道上,这是一个连接保持在Tomcat里面的问题?
我正在尝试使用SSL在Tomcat 7.0.23下运行JMX。 服务器位于AWS,这意味着所有主机都是NAT,我需要使用JmxRemoteLifecycleListener来显式设置JMX使用的两个端口。 我已经在这个主题上做了大量的阅读,但是我不能让所有的部分一起正常工作。 我可以让JMX在没有SSL的情况下正常工作。 我已经为我的Tomcat版本下载了catalina-jmx-remote.jar的版本,并将其安装在我的tomcat / lib目录中。 我的server.xml包含: <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="1099" rmiServerPortPlatform="1098" /> 当我用以下设置启动Tomcat时,我可以连接一个不安全的会话: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname=<public IP of server> -Dcom.sun.management.jmxremote.ssl=false 但是,如果我改变这些以下,那么我无法build立一个SSL连接: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.password.file=/path/to/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/path/to/jmxremote.access -Djava.rmi.server.hostname=<public IP of server> -Dcom.sun.management.jmxremote.ssl=true -Dcom.sun.management.jmxremote.registry.ssl=true -Dcom.sun.management.jmxremote.ssl.need.client.auth=false -Dcom.sun.management.jmxremote.authenticate=true -Djavax.net.ssl.keyStore=/path/to/keystore.dat -Djavax.net.ssl.keyStorePassword=<password> -Djavax.net.ssl.trustStore=/path/to/truststore.dat -Djavax.net.ssl.trustStorePassword=<password> keystore.dat仅包含通过以下方式创build的单个证书: openssl x509 -outform der -in cert.pem -out cert.der keytool -import -alias tomcat -keystore keystore.dat -file […]
我们有一个Java LDAP客户端与AD进行SSL连接。 有时连接会挂起,客户端和服务器会如下所示连续重新发送客户端密钥交换和ACK数据包,并在大约5分钟后最终超时。 对此行为的任何可能的解释和解决scheme。 client —— Client Key Exchange ———————-> Server client —— Client Key Exchange(Re-transmission)——> Server client <—– ACK ————————————— Server client —— Client Key Exchange(Re-transmission)——> Server client <—— Dup ACK ——————————— Server client —— Client Key Exchange(Re-transmission)——> Server client <—— Dup ACK ——————————— Server WireShark ScreenShot: http ://img59.imageshack.us/img59/6431/p63e.png