1.4修改可执行线程数:D:\\bea11g\%user_projects\\domains\\base_domain\\bin下的setDomainEnv.cmd;
调整规则:JDK5.0以后每个线程栈大小为1M,但是操作系统对一个进程内的线程数还是有限制的,不能无限生成。32位操作系统根据JVM最大堆内存设置;64位操作系统经验值在3000~5000左右。
重要代码片段:set JAVA_OPTIONS=-Dweblogic.threadpool.MinPoolSize=50 -Dweblogic.threadpool.MaxPoolSize=50
1.5修改weblogic服务器运行时可使用的内存使用量和静态堆栈的内存使用量:
调整规则,32位操作系统,一般不超过2G即可。 重要代码片段:
if \
set WLS_MEM_ARGS_64BIT=-Xms1024m -Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms1024m -Xmx1024m else (
set WLS_MEM_ARGS_64BIT=-Xms1024m -Xmx1024m set WLS_MEM_ARGS_32BIT=-Xms1024m -Xmx1024m set MEM_ARGS_64BIT=%WLS_MEM_ARGS_64BIT% set MEM_ARGS_32BIT=%WLS_MEM_ARGS_32BIT%
if \set MEM_ARGS=%MEM_ARGS_64BIT% else (
set MEM_ARGS=%MEM_ARGS_32BIT%
set MEM_PERM_SIZE_64BIT=-XX:PermSize=128m set MEM_PERM_SIZE_32BIT=-XX:PermSize=128m if \
set MEM_PERM_SIZE=%MEM_PERM_SIZE_64BIT% else (
set MEM_PERM_SIZE=%MEM_PERM_SIZE_32BIT% set MEM_MAX_PERM_SIZE_64BIT=-XX:MaxPermSize=256m set MEM_MAX_PERM_SIZE_32BIT=-XX:MaxPermSize=256m
1.6从Bea ProductsTools中启用Node Manager,即为节点管理器,是安装weblogic时选择安装的一个weblogic自带的工具,会自动监控AdminServer的健康状况,并自动决定是否重新启动,这样,可以实现监控Server相关内容的健康状况,并在异常时自动重启; 1.7 数据源的名字一定不能和应用的名字一样,否则会出现一定时间后,数据源对象自动不正常,甚至自动销毁(这个可能是weblogic的bug,只能尽量避免);
二:调整并优化了各项参数后,重新启动weblogic服务器,从weblogic的控制台监视,观看调整后变化,查看各项数据值,确认修改成功后即可:
2.1.应用并发能力能力增强,由会话,最大会话数,总会话数可以看出。
2.2.修改了setDomainEnv.cmd文件后,可执行线程数量增大到了50个,提高了多线程处理能力,当然,也需要耗费更多的服务器内存,所以,调整服务器可用内存是必须的。
2.3调整服务器可用内存后,监视服务器性能指数,有所提升。
2.4 调整了数据源配置后,可明显看到,数据源性能指数有明显的上升,并且,数据库链接获得的稳定性和正确性明显提升。
三:与应用程序相关的数据库链接问题关键点总结:
1. 在weblogic中配置数据源时,数据源的名字,绝对不能和应用的名字一样,例如,如果应用程序的名字为zmdswoa的话,那么数据源的名字最好是jdbc-zmdswoa,而不能为zmdswoa,如果重名,weblogic服务器会在加载和创建数据源对象时产生混淆,在一定时候,会造成数据源对象莫名奇妙的销毁,从而获得不了任何数据库链接,而数据源对象在下次重启weblogic服务器之前,都不会自动修复,所以,应用程序中会出现请求数据库连接时NullPointerException异常。修改所有数据源的名字,前面都加上了jdbc-前缀,使之与应用名字zmdswoa和zmdswbgscms不重名,减少了这种weblogic中bug发生的可能性。
2. 在办公系统zmdswoa中潜入了zmdswbgscms应用中的一个滚动图片jsp页面,而且,该页面代码由于代码错误,本来要加载服务器静态图片,但却是每次都需要重新从数据库中查询BLOB二进制流文件,有严重的数据库链接占用和消耗的情况发生;而碰巧,
zmdswbgscms和zmdswoa这两个应用是在同一个zmddb数据库实例下,而由于zmdswbgscms应用占用了大量的数据库链接,(默认情况下,oracle服务器端在一个数据库实例下,最多只能有150个数据库链接),假如被zmdswbgscms应用占用了大量的数据库链接,那么zmdswoa应用所对应的数据源将在一段时间后甚至无法获得任何一个可用的链接。修改了zmdswbgscms应用中的读取滚动图片的程序,使之在第二次加载时,直接读取服务器静态图片,而不再重复链接数据库,极大的避免了数据库占用和消耗的情况发生。
3. 由于默认的情况下,weblogic服务器只能提供15个并发线程数,而如果出现强并发的情况下,如果超过15个线程,同时请求数据库链接,且将在使用一段时间后才能释放。那么,第16个请求获得数据库链接的线程将无法获得任何可用的数据库链接,只能由
weblogic决定在合适的时机重新将使用完毕的数据库链接放回数据源的连接池中,供下个请求使用,所以,加大weblogic的线程数为50,并且一定要略小于最大可用数据库链接数60,才是合适的,防止并发情况下,所有数据库链接都被占用,那么新的请求到来时,将会无任何可用数据库链接可使用。修改了zmdswoa中定时刷新待办事宜页面的程序,尽可能的缩短数据库链接占用时间。
4.尤其是首页的程序,都要进行适量的SQL代码优化,最明显的优化点,如(1)修改所有select * 的地方,改为只选择需要的列,这样,会减少很多数据库链接占用的时间;(2对于数据量较大的表,尽量优化SQL语句,少用Like,in,not in等耗时的语法,而采用更加高效
合理的语法实现数据的查询。主要针对应用首页相关的jsp页面,进行全面的检查和修改,优化。
相关推荐: