VPS、Java、连接超时和内存不足

VPS、Java、连接超时和内存不足,java,linux,talend,Java,Linux,Talend,我正在从虚拟linux机器(VPS)运行一个JAR(例如,一个作业) 运行jar时,我面临连接超时的异常 我不能完全解释它,因为如果我在Eclipse中运行JAR(例如在Talend ESB Studio中),它会正常工作。jar正在进行一些httpget调用,并使用chromedev工具对它们进行测量,从10秒到40秒不等 在调查引发此异常的原因时,我在jar目录中发现了一个名为hs_err_pid6127.log的文件,其中包含一些关于内存不足,Java运行时环境无法继续运行的日志 我的问题

我正在从虚拟linux机器(VPS)运行一个JAR(例如,一个作业)

运行jar时,我面临连接超时的异常

我不能完全解释它,因为如果我在Eclipse中运行JAR(例如在Talend ESB Studio中),它会正常工作。jar正在进行一些httpget调用,并使用chromedev工具对它们进行测量,从10秒到40秒不等

在调查引发此异常的原因时,我在jar目录中发现了一个名为hs_err_pid6127.log的文件,其中包含一些关于内存不足,Java运行时环境无法继续运行的日志

我的问题是:这两件事能以某种方式联系起来吗?如何知道Java运行时环境的实际内存?这可能是超时的原因吗?如果是,如何解决

JAR异常堆栈跟踪:

Exception in component tREST_2
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:131)
        at com.sun.jersey.api.client.Client.handle(Client.java:616)
        at com.sun.jersey.api.client.WebResource.handle(WebResource.java:559)
        at com.sun.jersey.api.client.WebResource.get(WebResource.java:182)
        at jobtest.forwardjson_0_1.ForwardJSON.tREST_2Process(ForwardJSON.java:1770)
        at jobtest.forwardjson_0_1.ForwardJSON.tFileInputRaw_2Process(ForwardJSON.java:1257)
        at jobtest.forwardjson_0_1.ForwardJSON.tFileInputRaw_1Process(ForwardJSON.java:984)
        at jobtest.forwardjson_0_1.ForwardJSON.tJava_2Process(ForwardJSON.java:713)
        at jobtest.forwardjson_0_1.ForwardJSON.runJobInTOS(ForwardJSON.java:3400)
        at jobtest.forwardjson_0_1.ForwardJSON.main(ForwardJSON.java:3127)
Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
        at sun.net.www.http.HttpClient.New(HttpClient.java:308)
        at sun.net.www.http.HttpClient.New(HttpClient.java:326)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:997)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:933)
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:851)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1301)
        at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:218)
        at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:129)
        ... 9 more
Linux版本:

# uname -a
Linux vps177513.ovh.net 3.14.32-xxxx-grs-ipv6-64-vps #1 SMP Sat Feb 7 11:39:32 CET 2015 x86_64 x86_64 x86_64 GNU/Linux
编辑--一些更有趣的事实:

# free -m
             total       used       free     shared    buffers     cached
Mem:          1992       1898         93          4         36         42
-/+ buffers/cache:       1819        172
Swap:         2049       2046          3
为了响应注释,我通过以下脚本运行JAR:

#!/bin/sh
cd `dirname $0`
 ROOT_PATH=`pwd`
 java -Xms256M -Xmx1024M -cp $ROOT_PATH:$ROOT_PATH/../lib/systemRoutines.jar:$ROOT_PATH/../lib/userRoutines.jar::.:$ROOT_PATH/forwardjson_0_1.ja r:$ROOT_PATH/../lib/camel-core-2.13.2.jar:$ROOT_PATH/../lib/commons-io-2.4.jar:$ROOT_PATH/../lib/cxf-api-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-bin dings-xml-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-core-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-frontend-jaxrs-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-rs-ext ension-providers-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-transports-http-2.7.12.jar:$ROOT_PATH/../lib/dom4j-1.6.1.jar:$ROOT_PATH/../lib/javax.ws.rs- api-2.0-m10.jar:$ROOT_PATH/../lib/jersey-client-1.4.jar:$ROOT_PATH/../lib/jersey-core-1.4.jar:$ROOT_PATH/../lib/jettison-1.3.5.jar:$ROOT_PATH/.. /lib/log4j-1.2.15.jar:$ROOT_PATH/../lib/mail.jar:$ROOT_PATH/../lib/slf4j-api-1.7.7.jar:$ROOT_PATH/../lib/slf4j-log4j12-1.7.7.jar:$ROOT_PATH/../l ib/stax-api-1.0.1.jar:$ROOT_PATH/../lib/stax2-api-3.1.4.jar:$ROOT_PATH/../lib/woodstox-core-asl-4.4.0.jar:$ROOT_PATH/../lib/wsdl4j-1.6.3.jar:$RO OT_PATH/../lib/xmlschema-core-2.1.0.jar: talendjobtest.forwardjson_0_1.ForwardJSON --context=Default "$@" root@vps177513:~/talend/ForwardJSON #

您需要一个探查器来查看随时间消耗内存的内容。我不知道一个无状态的web服务如何继续消耗内存,除非你在某处发生了泄漏。可能是烫发原;可能是别的。措施;别猜了


32位JVM不允许分配超过堆大小的内存。

很明显,JVM试图分配179306496字节,但失败了。你的VPS是多大尺寸?那你怎么启动那个罐子呢?如果通过脚本,您可能会找到有助于诊断问题的-Xmx和/或-Xms参数。但我的第一个想法是,您的VPS可能有点小。@fvu:请参阅编辑。哪个命令可以理解VPS的大小?top命令(尤其是M视图)可以帮助您理解VM的内存在哪里被使用-正如您可以从free的输出中得出的那样,总内存是1992MB,因此它是2GB的VM。我怀疑jar的问题。看起来资源(比如iostreams)没有关闭。谢谢你的回答。你看到自由编辑命令了吗?您是否有一些探查器可供建议?Windows JVM附带VisualVM.exe。我不懂Linux。我会首先推荐它,因为它是免费的。dynaTrace或JProfiler将是我的商业建议。
#!/bin/sh
cd `dirname $0`
 ROOT_PATH=`pwd`
 java -Xms256M -Xmx1024M -cp $ROOT_PATH:$ROOT_PATH/../lib/systemRoutines.jar:$ROOT_PATH/../lib/userRoutines.jar::.:$ROOT_PATH/forwardjson_0_1.ja r:$ROOT_PATH/../lib/camel-core-2.13.2.jar:$ROOT_PATH/../lib/commons-io-2.4.jar:$ROOT_PATH/../lib/cxf-api-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-bin dings-xml-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-core-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-frontend-jaxrs-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-rs-ext ension-providers-2.7.12.jar:$ROOT_PATH/../lib/cxf-rt-transports-http-2.7.12.jar:$ROOT_PATH/../lib/dom4j-1.6.1.jar:$ROOT_PATH/../lib/javax.ws.rs- api-2.0-m10.jar:$ROOT_PATH/../lib/jersey-client-1.4.jar:$ROOT_PATH/../lib/jersey-core-1.4.jar:$ROOT_PATH/../lib/jettison-1.3.5.jar:$ROOT_PATH/.. /lib/log4j-1.2.15.jar:$ROOT_PATH/../lib/mail.jar:$ROOT_PATH/../lib/slf4j-api-1.7.7.jar:$ROOT_PATH/../lib/slf4j-log4j12-1.7.7.jar:$ROOT_PATH/../l ib/stax-api-1.0.1.jar:$ROOT_PATH/../lib/stax2-api-3.1.4.jar:$ROOT_PATH/../lib/woodstox-core-asl-4.4.0.jar:$ROOT_PATH/../lib/wsdl4j-1.6.3.jar:$RO OT_PATH/../lib/xmlschema-core-2.1.0.jar: talendjobtest.forwardjson_0_1.ForwardJSON --context=Default "$@" root@vps177513:~/talend/ForwardJSON #