一般cpu占用效高都是排序、sql解析和全表扫描,这里首先需要找出占用cpu最高的sql,然后查看他的执行计划,比如:看执行计划是走索引还是全表扫描(刚开始查看top发现占用同样多的CPU的进程很多,还以为是oracle 的bug, 后来发现不是)。
处理过程:
1, 根据 *** 作系统进程查找Oracle数据库中占用最多CPU的SQL
使用Linux系统 "top命令->P "查出占用cpu最高的进程PID
*** 作如下:在sqlplus中执行如下sql:
SQL>
SELECT
sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN
(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),
DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr =
(SELECT addr FROM v$process c WHERE c.spid = '&pid'))
ORDER BY piece ASC
其中&pid 是使用top 查看系统中进程占用CPU极高的PID
找到SQL语句进行相应的调整优化
2,分析找到的sql语句,如查看sql执行计划。
服务器内存占用过高的解决方法:1,首先通过任务管理器进行进程排序,查找占用内存较大的程序进程。一般占用内存较大的进程有W3WP、sqlserver、mysqld-nt.exe;
2, 站点进程w3wp 可以在cmd命令行中通过 iisapp 命令来对应是那个网站占用内存较大。可以通过设置回收时间、内存最大使用值或共用进程池来减少内存的占用,但是如果要保证网站的访问质量,还是建议升级至更高型号来解决;
3,数据库 sql server 也可以通过数据库的企业管理器来设置最大内存占用,但是如果网站程序必须要占用较大内存的话,设置后会发生页面报错、打不开等问题;
4,MYSQL本身会占用较大虚拟内存,如果不使用mysql数据库的话,可以将其停止。
这种情况说明主机内存过小或者系统没有经过优化。
一、首先从硬件入手,添加内存是最直接的解决方法,如果内存低于4G那么还是建议添加内存,这样才能根本解决问题。
二、排除内存过小,那么就是系统没有经过优化,可以尝试使用第三方软件或者手动优化解决内存使用率过高。
1、是用360加速球点击清理即可清理内存。
只是点击一键加速是不够的,需要打开360安全卫士,点击电脑清理,选择全面清理。
2、禁用闲置的IDE通道 右键点击“我的电脑-属性”,然后点击“硬件”接着点击“设备管理器”,在其中打开“IDE ATA/PATA控制器”然后分别进入主要和次要IDE通道,选择“高级设置”,在这里找到“当前传送模式”为“不适用”的一项,将此项的“设备类型”设置为“无”。
3、优化视觉效果,关闭“视觉效果”中不需要的效果 右键单击“我的电脑”,点击“属性”,点击“高级”,在“性能”一栏中,点击“设置”,点击“视觉效果”,在这里把所有特殊的外观设置都关闭掉,我们就可以省下“一大笔”内存。
4、优化启动和故障恢复 右键单击"我的电脑"-"属性"-"高级"-"启动和故障修复"中点击“设置”,去掉"将事件写入系统日志","发送管理警报","自动重新启动"选项将"写入调试信息"设置为"无"点击"编辑",在d出记事本文件中:[Operating Systems] timeout=30 把 30 秒改为 0 秒。
5、禁用错误报告 右键单击"我的电脑"-"属性”-"高级”-"错误报告”,点选“禁用错误汇报”,勾选"但在发生严重错误时通知我”-确定。
6、关闭系统还原 右键单击“我的电脑”,点击“属性”,会d出来系统属性对话框,点击“系统还原”,在“在所有驱动器上关闭系统还原”选项上打勾。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)