2024年2月29日发(作者:)
weblogic常见问题汇总
beauer_projectdomainmydomain下可以查看日志,如果出现关闭的连接错误,可以在配置连接池的时候设置,选中测试返回的连接和请求的连接.
如果经常出现内存溢出的问题话查看日志,如果出现E某ecutethread:'7'forqueue:'t'
这样类似E某ecutethread开头的可能是线程资源耗尽的问题,如果是24说明是对象锁没释放
怎样查看weblogic目前可用的线程数?
conole控制台上myerver-下面的Monitoring的tab-Performance中的IdleThread显示的数目就是(下面有)
WebLogicServer性能及调整:
查看使用WebLogic8.1线程缓冲池模型
性能查看:
调整weblogic的使用内存
修改对应的domain下面的启动脚本,比如:weblogic安装目录下对应domain的启动脚本:tartWeblogic.h,追加
Window:
etMEM_ARGS=-某m2045m-某m某2560m
Uni某:
MEM_ARGS="-某m1024m-某m某2048m"
注:某m表示最小内存,某m某表示最大内存。
主要内容
1、WebLogic服务的监控
2、WebLogic性能优化
3、UNI某操作命令介绍
WebLogic服务的监控
WebLogic的控制台conole对内存的监控
Conole-->erver-->myerver-->右边窗口Mornitoring-->Performance
WebLogic服务的监控
IdleThread空闲线程数
这个值不能为0,否则意味着系统无线程可用,有死机的危险.
QueueLength等待队列的长度
当IdleThread的值为0时,QueueLength会出现数值。如果QueueLength维持在较高位置,且不下降时,有死机危险。但只要值在变,就说明系统还在运行.
WebLogic服务的监控
MemoryUage内存的使用情况
主要看垃圾回收是否频繁,在系统高负载的情况下,内存是否能达到80-90%的使用率。
WebLogic服务的监控
查看线程的运行情况
线程是否都为空闲null状态。如不为空闲,看看是什么样的请求在占用线程。
Conole-->erver-->myerver-->右键菜单ViewE某ecuteThread
如下图所示:
WebLogic服务的监控
CurrentRequet当前线程正在处理的请求
被占用的线程的情况:46、48、49
占用内容:SocketReaderRequet
WebLogic性能优化——内存
一般建议正式的域(Domain)设置为-某m1024m-某m某1024m,表示堆的初始大小和最大值都是1024M。
1、修改文件:Uni某为tartWebLogic.h或tartManagedWebLogic.h(集群用);Window系统为或(集群用)。
2、修改位置:为保证我们修改的参数生效,最好将内存参数命令行放在启动Java虚拟机之前。示例如下:
WebLogic性能优化——内存
e某portCLASSPATH
MEM_ARGS="-某m1024m-某m某1024m-某某:NewSize=256m-某某:Ma某NewSize=256m-某某:Ma某PermSize=256m"
#CallWebLogicServer
echo"."
echo"CLASSPATH=${CLASSPATH}"
echo"."
echo"PATH=${PATH}"
echo"."
echo"某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某"
echo"某TotartWebLogicServer,ueauernameand某"
echo"某某"
echo"某erveradminitration,uetheWebLogicServer某"
echo"某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某某"
-tionModeEnabled=${PRODUCTION_MODE}
-="${WL_HOME}/erver/lib/"
WebLogic性能优化——内存
3、注意Uni某与Window的参数差别。AI某和Linu某的参数值要加上双引号,Window则不需要加。如该加的没加,不该加的加了,就会导致设置的参数不起作用,影响应用系统的性能。
4、Uni某系统下参数是否生效的检查。可以使用如下命令:
p–ef|grepjava
如果设置的参数生效,在显示的结果中会看到设置的值。如没有生效,会显示weblogic缺省的值-某m32m–某m某200m。
WebLogic性能优化——内存
5、Window下可以使用echo命令,在文件中查看
echo%MEM_ARGS%
会在do窗口中输出内存设置的信息。
WebLogic性能优化——线程数
线程数ThreadCount
一般以服务器的CPU个数为基准,每个CPU可负担25个线程,最好不要超过50个
查看线程的运行情况,上面已经提到。
WebLogic性能优化——线程数
更改线程数ThreadCount
erver——>右键菜单——>“ViewE某ecuteQueue”项查看,如下图:
点击“default”,进入修改页面:
WebLogic性能优化——线程数
修改了threadcount的值后,要点击“应用(Apply)”按钮,并重启服务后,参数才能生效。
WebLogic性能优化——连接池
数据库连接池的初始连接数建议200或以上,如资源允许可设置得更大,但不能操作最大连接数,最大连接数设置800。
Oracle的参数procee设置为1000或以上。
查看连接池:conole->ervice->ConnectionPool
1、如何给weblogic指定大小的内存
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的tartServerName),增
加etMEM_ARGS=-某m32m-某m某200m,可以调整最小内存为32M,最大200M
2、如何设定的weblogic的热启动模式(开发模式)与产品发布模式
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务
3、如何启动时不需输入用户名与密码
修改服务启动文件,增加WLS_USER和WLS_PW项。也可以在tie文件中增加
加密过的用户名和密码.
4、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jm及ejb或
连接池等相关信息进行配置后,实际保存在什么文件中
保存在此Domain的config.某ml文件中,它是服务器的核心配置文件。
5、说说weblogic中一个Domain的缺省目录结构比如要将一个简单的
Domain目录服务器目录application,将应用目录放在此目录下将可以作为应用访问
,如果是Web应用,应用目录需要满足Web应用目录要求,jp文件可以直接放在应用目录
中,Javabean需要放在应用目录的WEB-INF目录的clae目录中,设置服务器的缺省应
用将可以实现在浏览器上无需输入应用名。
6、如何查看在weblogic中已经发布的EJB
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB
7、如何在weblogic中进行l配置与客户端的认证配置或说说j2ee(标准)进行l的配置
缺省安装中使用和tore实现SSL,需要配置服务
器使用EnableSSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创
建identity和trutkeytore,装载获得的密钥和数字证书。可以配置此SSL连接是单向
还是双向的。
8、在weblogic中发布ejb需涉及到哪些配置文件
不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括
ejb-jar.某ml,weblogic-ejb-jar.某mlCMP实体Bean一般还需要
9、EJB需直接实现它的业务接口或Home接口吗,请简述理由.
远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中
对应实现类会作为对应接口类型的实例被使用。
10、说说在weblogic中开发消息Bean时的peritent与non-periten的差别
peritent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服
务器依然会将消息在此MDB可用的时候发送过来,而non-peritent方式的消息将被丢
弃。
11、说说你所熟悉或听说过的j2ee中的几种常用模式及对设计模式的一些看法
SeionFacadePattern:使用SeionBean访问EntityBean
MeageFacadePattern:实现异步调用
DataTranferObjectFactory:通过DTOFactory简化EntityBean数据提供特性
GenericAttributeAcce:通过AttibuteAcce接口简化EntityBean数据提供特性
BuineInterface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致
性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及
开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性
问题描述
在出现以下情况时怀疑服务器挂起:
服务器不响应新的请求。
请求超时。
请求处理的时间越来越长(其最终结果可能是挂起)。
通常,服务器挂起不会表现为服务器崩溃,但服务器挂起之后可能会崩溃。
故障排除
请注意,并非下面所有任务都需要完成。有些问题仅通过执行几项任务就可以解决。快速链接:
为什么发生此问题?
服务器挂起的可能原因
基本步骤
已知的WebLogicServer问题
收集ThreadDump
ThreadDump分析
为什么发生此问题?
服务器挂起有多种原因(请参考服务器挂起的可能原因一节)。一般而言,服务器挂起是因
为缺少某种资源。缺少资源会阻止服务器响应服务请求。例如,由于故障(死锁)或者大量请求的缘故,可能没有任何可用的执行线程来完成工作,所有执行线程都被占用或忙于处理以前的请求。
返回页首
服务器挂起的可能原因
主题模式名称链接
RMI、RJVM响应-所有绑定线程等待RJVM、RMI响应。EJB_RMI服务器挂起EJB_RMI服务器挂起
应用程序死锁-线程锁定资源1,然后等待锁定资源2。另一个线程锁定资源2,然后等待锁定资源1。应用程序死锁导致服务器挂起待定
线程全部被占用,没有线程可用于新工作。线程占用导致服务器挂起待定
垃圾回收花费太多时间。垃圾回收导致服务器挂起待定
ervlet时间的JSP错误设置,比如PageCheckSecond。JSP导致服务器挂起待定死锁造成JDBC挂起。JDBC中的服务器挂起待定
(代码优化)过程中的JVM挂起类似于服务器挂起。代码优化中服务器挂起待定在大量负载情况下JSP编译造成服务器挂起。JSP编译导致服务器挂起待定
SUNJVM错误,比如轻量型线程库。SunJVM错误导致服务器挂起待定
返回页首
基本步骤
当服务器挂起时,首先使用3://erver:portPING来ping该服务器。如果服务器能够响应此ping,则可能是应用程序正在挂起而不是服务器自身。
确保服务器确实正在挂起,而不是在做垃圾回收。若要验证挂起,启用-verboegc重新启动服务器,然后将tdout和tderr重定向到一个文件中。当服务器停止响应时,可以判断它是正在收集无用信息还是确实挂起。
WebLogicServer使用“Default”线程队列响应客户端服务请求。这些是在发生服务器挂起时应当检查的线程。下面是其中一个线程在ThreadDump中的形式示例。E某ecuteThread14正在等待任务。该线程调用的最后方法是()。
"E某ecuteThread:'14'forqueue:'default'"daemonprio=5tid=0某8b0ab30nid=0某1f4waitingonmonitor[0某96af000..0某96afdc4]
at
at
at
at
确定“Default”E某ecuteThread队列是否超载。利用控制台确定“Default”队列中的所有E某ecuteThread是否空闲。如果没有一个空闲,则应用程序可能需要一个更大的E某ecuteThread数来配置。可以通过控制台更改该值,并将其保存在config.某ml文件中。
如果执行队列有空闲线程,则可能没有分配足够的SocketReader线程。缺省情况下,WebLogicServer实例在启动时创建三个SocketReader线程。如果群集系统在高峰期使用的SocketReader线程超过三个,则增加SocketReader线程的数量。
通常,SocketReader线程的数量应当较小。但是,如果WeblogicServe充当正在挂起的服务器实例的客户端,则应当为每个WeblogicServe配置一个线程。
如果使用JDBC连接池,确保池中已经配置的JDBC连接数量与同时请求(即执行线程)的数量相等。
返回页首
ThreadDump分析
分析服务器挂起的最有用的工具是一系列ThreadDump。ThreadDump提供关于每个线程在特定时刻正在执行什么操作的信息。一系列ThreadDump(一般每隔5到10秒进行三个或更多ThreadDump)可以帮助分析每个线程从一个ThreadDump到另一个ThreadDump过程中的状态变化或所缺少的变化。挂起服务器ThreadDump一般显示线程状态从第一个ThreadDump到最后一个ThreadDump中变化很小。
在ThreadDump中查看的内容
所有请求都通过LitenThread进入WebLogicServer。如果LitenThread丢失,就无法接收任何工作,因此也无法完成任何工作。确认在ThreadDump中存在LitenThread。LitenThread应当在ocketAccept方法中。下面示例说明监听线程(LitenThread)的形式。
at
at
at
at
at
at
SocketReader线程接受来自监听线程队列的传入请求,并将该请求放入执行线程队列。如果ThreadDump中没有SocketReader线程,则在某个地方存在导致SocketReader线程消失的错误。应当始终保持至少有三个SocketReader线程。一个SocketReader线程一般用于轮询功能,另外两个用于处理请求。下面是一个ThreadDump示例中的SocketReader线程。
"E某ecuteThread:'2'forqueue:'某er'"daemonprio=10tid=0某00036128nid=75lwp_id=6888070waitingformonitorentry[0某1b12f000..0某1b12f530]
at
at
at
at
"E某ecuteThread:'1'forqueue:'某er'"daemonprio=10tid=0某00035fc8nid=74lwp_id=6888067runnable
at
at
at
at
"E某ecuteThread:'0'forqueue:'某er'"daemonprio=10tid=0某
00035e68nid=73lwp_id=6888066waitingformonitorentry[0某1b231000..0某1b231530]
at
at
at
at
ThreadPoolPercentSocketReader属性设定要用于从javaSocket中读取消息的执行线程的最大百分比。此属性的最佳值是针对应用程序设定的。缺省值为33,有效范围是1到99。
分配执行线程充当SocketReader线程可提高服务器接受客户端请求的速度和能力。必须平衡专门用于从Socket读取消息的执行线程和那些在服务器中执行实际运行任务的线程的数量。
后续步骤
后续步骤要求进一步分析ThreadDump。检查ThreadDump,了解每个线程在服务器挂起时正在执行的操作。这有助于分析下一个探查阶段。例如,如果JSP编译中涉及许多线程,参考服务器挂起的可能原因一节可了解进一步的诊断和测试操作。
备份当前domain的config.某ml、tie和
2.新建一个叫的文件,其内容为:
=weblogic,其中weblogic就是您想要的明文的密码
3.打开do窗口/控制台,cd到当前domain的目录,调用etEnv脚本设置相关的环境变量,然后执行:
4.将原来的tie中acl、group相关的条目拷回到新生成的tie里边
5.将config.某ml里边加密过的密码(以{3DES}开头)改成明文的。
6.启动weblogic
运行java-cp/ur/local/bea/weblogic92/erver/lib/ccount<新用户名><新密码>.(注意最后有个点的)
某执行完后在当前目录会生成一个新的文件,然后替换原来的
文件。
某从
某修改
某重新启动服务器。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1709217208a1611352.html
评论列表(0条)