我有一个在Windows上运行在WebLogic 11g上的Java应用程序,经过几天后,它变得没有响应.我注意到的一个可疑症状是,netstat即使服务器处于空闲状态,大量连接(大约3000个)也会显示CLOSE_WAIT状态.由于应用程序服务器正在管理客户端连接,因此我不确定是什么导致了这种情况.我们还进行了许多环回到同一服务器的Web服务调用,但我相信这些连接会正常关闭.还有什么可能导致这种情况,以及如何解决这样的问题?
我不时地在日志中看到以下堆栈跟踪,HttpClient套接字超时试图text/script从另一个服务器访问内容.我的问题是我应该在Linux上检查在Weblogic上运行的J2EE应用程序的配置设置是什么?我特意寻找以下内容.
HttpClient PARAMS这是我的代码
HTTPResponse httpClientResponse;
//do some stuff
httpClientResponse.getStatusCode(); // this is where it fails
Run Code Online (Sandbox Code Playgroud)
这就是堆栈跟踪
java.net.SocketTimeoutException: Read timed out
at jrockit.net.SocketNativeIO.readBytesPinned(Native Method)
at jrockit.net.SocketNativeIO.socketRead(SocketNativeIO.java:32)
at java.net.SocketInputStream.socketRead0(SocketInputStream.java)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at HTTPClient.BufferedInputStream.fillBuff(BufferedInputStream.java:206)
at HTTPClient.BufferedInputStream.read(BufferedInputStream.java:126)
at HTTPClient.StreamDemultiplexor.read(StreamDemultiplexor.java:356)
at HTTPClient.RespInputStream.read(RespInputStream.java:147)
at HTTPClient.RespInputStream.read(RespInputStream.java:108)
at HTTPClient.Response.readResponseHeaders(Response.java:1123)
at HTTPClient.Response.getHeaders(Response.java:846)
at HTTPClient.Response.getStatusCode(Response.java:331)
at HTTPClient.RetryModule.responsePhase1Handler(RetryModule.java:92)
at HTTPClient.HTTPResponse.handleResponseImpl(HTTPResponse.java:872)
at HTTPClient.HTTPResponse.access$000(HTTPResponse.java:62)
at HTTPClient.HTTPResponse$2.run(HTTPResponse.java:839)
at HTTPClient.HTTPResponse$2.run(HTTPResponse.java:837)
at
HTTPClient.HttpClientConfiguration.doAction(HttpClientConfiguration.java:666)
at HTTPClient.HTTPResponse.handleResponse(HTTPResponse.java:837)
at HTTPClient.HTTPResponse.getStatusCode(HTTPResponse.java:242)
Run Code Online (Sandbox Code Playgroud)
谢谢
我将使用下面的调查结果更新我的问题.
HttpClient这意味着服务器的http会话超时可能正在生效.SO_TIMEOUTfor HttpClient …在我的工作中,我们使用Weblogic Server来托管企业门户.哪个好.
但是,我最近有机会使用Tomcat进行一些项目,我对速度上令人难以置信的差异感到震惊.Tomcat启动需要3-5秒,部署中型项目需要10-15秒.Wewblogic 启动需要3-5 分钟,部署最多需要10 分钟.这会杀死任何迭代开发.
我是不是必须让自己放慢速度和臃肿,或者我能做些什么来加快速度?有人有这方面的经验吗?
默认情况下,WebLogic在15分钟(600秒)后杀死卡住的线程,这由StuckThreadMaxTime参数控制.但是,我找不到关于如何定义"卡住"的更多细节.特别:
wait()的方法?别的什么?我的用例是通过权限系统下载大文件.由于用户需要进行身份验证并具有查看文件的权限,因此我无法(或至少不知道如何)将其留给简单的HTTP服务器,例如Apache.而且由于文件可能很大,下载(至少在理论上)可能需要超过15分钟.
从文档中不清楚为什么要在WebLogic群集中使用Unicast而不是Multicast.任何人都有使用任何一个和转移到Unicast的好处的经验?
从性能角度理解JMS我遇到了一些麻烦.我们在应用程序中有这么简单的代码:
QueueConnection connection = null;
QueueSession session = null;
QueueSender sender = null;
TextMessage msg = null;
try {
// The JNDIHelper uses InitialContext to look up things
QueueConnectionFactory qcf = JNDIHelper.lookupFactory();
Queue destQueue = JNDIHelper.lookupQueue();
// These objects are created for every message, which is quite slow
connection = qcf.createQueueConnection();
session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
sender = session.createSender(destQueue);
// This is the actual message
msg = session.createTextMessage(xmlMsg);
sender.setTimeToLive(0);
sender.send(msg);
}
finally {
// Close all objects again
JMSUtilities.safeClose(sender);
JMSUtilities.safeClose(session);
JMSUtilities.safeClose(connection); …Run Code Online (Sandbox Code Playgroud) 我收到此错误:
java.lang.InternalError: name is too long to represent
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:338)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:291)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:259)
Run Code Online (Sandbox Code Playgroud)
这似乎与某些调试功能有关(实际上删除-Xdebug命令行选项,错误消失).我也在ASF Bugzilla中找到了一些信息.有办法解决这个问题吗?
我能想到的可能的解决方案是更改JVM(使用JRockit应该没有这个问题),但我真的不知道这是否可以解决问题以及是否可以破坏其他问题.
我正在尝试使用EJB 1.1的东西部署和旧的代码库到Weblogic 10.3.6并继续得到这个奇怪的错误Class bytes found but defineClass()failed for.
这些课程在那里,并找到导致这种情况的原因?
是否可以获取JVM中的所有类加载器的列表,或者至少所有与Java EE Server中的Web应用程序相关联的类加载器(在我的例子中为WebLogic).
我们使用的是weblogic版本12C.重现问题的步骤: -
我们需要每次都创建一个新的数据源,或者再次保存数据源设置.
如果您知道某种解决方案,有人可以检查并告诉我吗?
weblogic ×10
java ×7
java-ee ×3
apache ×1
datasource ×1
ejb ×1
httpclient ×1
java-5 ×1
jms ×1
netstat ×1
performance ×1
sockets ×1
spring ×1
tcp ×1
tomcat ×1