前段时间发布的系统(Oracle+weblogic)频繁挂掉,每天早上9点、下午2点高峰期就挂,纠结了很长时间,最终解决,方法描述下。

执行select count(*),status from v$session group by status;指令,发现不活动连接数比较大,当上升到一定数值之和,就挂。

做了下面优化,包括数据库的优化和WebLogic的优化。

1、数据库优化

1)  创建pfile SQL>create pfile from spfile

检查

  • oracle/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'(准确路径:/oracle/admin/ORADB/pfile/init.ora.352012231626)文件是否存在,备份到本地。

2)  web服务,备份数据库,备份发布的代码

3)  查看参数并记录

1、show parameter sga

2、查看PGA_AGGREGATE_TARGET值

SELECT NAME, VALUE/1024/1024 MB

FROM v$pgastat

WHERE NAME IN ('aggregate PGA target parameter', 'global memory bound');

4)  修改pfile的内容

--alter system set sga_max_size=4096M scope=spfile ;

--alter system set sga_target= 4096M scope=spfile;

--alter system set pga_aggregate_target=2048M  scope=spfile ;

alter system set pre_page_sga=true scope=spfile ;

alter system set lock_sga=true scope=spfile;

alter system set workarea_size_policy=auto scope=spfile ;

5)  修改limits.conf并重启电脑

/etc/security/limits.conf这个配置文件中添加如下的一行(oracle是启动数据库的操作系统账号),意思是oracle用户可以在物理内存中锁住任意大的空间:

oracle - memlock unlimited

然后重启操作系统reboot

6)  如果启动数据库失败,执行修复

startup pfile='……/product/10.1.0/admin/orcl/pfile/init.ora.XXXXXXXX'

7)  修改oracle连接池,并重启数据库

Oracle的sessions和processes的关系是
    sessions=1.1*processes + 5

SQL>show parameter processes;

SQL>alter system set processes=1000 scope = spfile;

SQL>show parameter session;

SQL>alter system set sessions=1105 scope = spfile;

2、优化WebLogic

1)  修改web服务器连接池

weblogic所在服务器尚有26G内存,为满足1000并发访问量,可以将数据源连接池最高设置为2000。

初始容量改为500    当前设置值3

最大容量改为2000   当前设置值200

容量增长改为100     当前设置值3

重新启动weblogic

 

2)  修改web服务器JVM内存大小(参数待定)

找到安装目录下的weblogic\common\bin\commEnv.cmd文件

打开修改如下代码:

sun

if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode

set JAVA_VM=-client

set MEM_ARGS=-Xms1024mm-Xmx2048mm-XX:MaxPermSize=256m

set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none goto continue :sun_prod_mode set JAVA_VM=-server ...

3)  发布新版程序

4)  重启web服务器操作系统

3、最终解决

经过上述处理,系统有明显优化,但是每天死机3次,早上8点,10点,下午3点左右。

经过执行下面2个指令,分别查看线程的活动情况和堆栈信息情况,可以跟踪到哪个方法导致系统堆栈延迟。

top -H 这个命令是查看是哪个线成比较忙

jstack -l 8032 | less  这个命令是查看堆栈信息,堆栈延迟中可以看到是执行了什么方法导致的。没有延迟就看不到,有延迟就能看到哪个方法导致系统堵塞,后来发现有个方法代码效率很低,而且访问最频繁,访问高峰时间正好和死机的时间吻合。

优化方法之后,系统稳定了。

解决Oracle+weblogic系统死机的问题的更多相关文章

  1. [vmware]另类解决vmware关闭win10死机或蓝屏问题

    升级win10后在使用虚拟机发生一个问题,本人的win10版本为win10 9879, 在使用vmware时,当关机会整个系统死机,在网上搜索后发现这是由于win10内核升级导致vmware不兼容,最 ...

  2. 嵌入式/X86下linux系统死机及内存优化

    一.  CPU 过高或死锁导致系统卡死 1. CPU占用过高 (1)开线程太多导致CPU占用过高,系统卡死 解决:优化应用层业务逻辑,有些业务不必开线程就不开 (2)频繁清缓存导致读spi-flash ...

  3. 删除一个cjson导致系统死机

    一个未使用,未分配的cjson指针应该被删除,如果尝试删除一个 未分配,未启用的cjson将导致内存出错,死机.

  4. 解决oracle 端口 1521 本机127可通 其他ip不通

    http://wenku.baidu.com/link?url=8tRGGObqgLd6-yqprioIZSyluu9K0BgA29Lhx7F57pVDIHbMHVDNTa_SlEmVugGT4QJO ...

  5. 解决VS2010使用comboBox死机问题

    今天,在10下使用combobox总是不响应,原来是和翻译软件冲突,关掉有道立即解决.

  6. lwip BUG ,导致 系统 死机

    pcb->snd_queuelen >= pbuf_clen(next->p) sys_arch_assert: in ..\..\User\lwip\src\core\tcp_in ...

  7. linux死机解决办法

    linux死机后不要长按电源建强制关机,容易对损坏系统配置或者电脑硬件,导致重启后产生不必要的麻烦 如果是在图形界面下死机的话,不要再依赖任何图形界面的工具,解决方法如下: 1.一种方式是进入终端界面 ...

  8. Windows死机的话,可能的一些猫病

    一.由硬件引起的原因 [散热不良] 显示器.电源和CPU在工作中发热量非常大,因此保持良好的通风状况非常重要,如果显示器过热将会导致色彩.图象失真甚至缩短显示器寿命.工作时间太长也会导致电源或显示器散 ...

  9. windows server 2012 开机运行一段时间死机的故障

    环境: 物理机:华为2288 V5 虚拟化:esxi 6.5.2 虚拟操作系统 windwos server 2012 标准版 内安装sql server 和其他应用软件 故障描述:window se ...

随机推荐

  1. yii2-basic后台管理功能开发之四:图片上传FileInput

    我采用的是 kartik-v/yii2-widget-fileinput的文件上传插件,大家可以去github查看详细的安装方法和使用说明. 需求:上传图片+可以预览缩略图 在这里说说我碰到的问题:限 ...

  2. loadrunner将参数文件转换为UTF-8编码

    在使用loadrunner进行参数化的时候,对于有些信息,比如地址.人名等,很多时候需要传入中文,但是有的时候会碰到字符编码不对导致脚本出错. 下面介绍两种loadrunner中可以使用的编码转化为U ...

  3. Convert Sorted List to Binary Search Tree [LeetCode]

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  4. Windows 10系统更换Windows 7系统磁盘分区注意事项二

    1.在原WIN10系统中将硬盘的GPT分区表格式转换为MBR分区表格式 上一篇关于新机预装WIN10系统更换为WIN7系统中说到需要将硬盘的GPT分区表格式转换为MBR分区表格式,在文章末尾给出的链接 ...

  5. Python笔记总结week4

      1. Built-in functions 函数可能遇到的问题:下面例子函数改变了函数需要传入的参数 li = [11,22,33,44] def f1(arg): arg.append(55) ...

  6. C# 中的 Static

    今天测试了一下C#中 static 的初始化顺序: 1.调用时才初始化, 2.按照调用顺序初始化 3.先执行类的静态方法,然后初始化静态变量及方法 4.继承时,先执行子类的静态方法,然后执行父类的静态 ...

  7. 记一次联想A820t救砖线刷

    因为是看着教程刷的(有大神放出教程,只管伸手拿来就好啦)但是照着教程做的过程中出现了一些问题还是值得注意的,在这里总结一下,给新手提供一点建议 教程比较长,我放到博客的文件中,需要的自己下载一下.或者 ...

  8. Codeforces Round #211 (Div. 2) D题(二分,贪心)解题报告

    ---恢复内容开始--- 题目地址 简要题意: n个小伙子一起去买自行车,他们有每个人都带了一些钱,并且有公有的一笔梦想启动资金,可以分配给任何小伙子任何数值,当然分配权在我们的手中.现在给出m辆自行 ...

  9. maven添加自己的jar包到本地仓库

     mvn install:install-file -DgroupId=com.esotericsoftware -DartifactId=minlog -Dversion=1.2 -Dpackagi ...

  10. 转载《遭受arp攻击怎么办》

    ARP(Address Resolution Protocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行.ARP攻击仅能在以太网(局 域网如: ...