ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 网银业务系统运行缓慢分析

网银业务系统运行缓慢分析

原创 Linux操作系统 作者:dodba 时间:2011-03-02 11:39:26 0 删除 编辑
一、 问题描述
    系统的操作用户反映某些操作功能比较慢,并且开发人员在向数据库导入表数据时也非常慢,10万条数据导入花费近1小时,说明数据库确实有问题。
二、 问题分析
登录操作系统看了一下主机的负载以及数据库的性能状况,CPU总使用率较高,有90%,CPU实用情况如下:
$ topas
Topas Monitor for host:    55A_1                EVENTS/QUEUES    FILE/TTY
Thu Aug  5 16:26:39 2010   Interval:  2         Cswitch    1664  Readch    75343
                                                Syscall 133.9K   Writech 264.3K9
Kernel    3.3   |##                          |  Reads       821  Rawin         0
User     90.3   |##########################  |  Writes      744  Ttyout      386
Wait      0.0   |#                           |  Forks         0  Igets         0
Idle      6.5   |##                          |  Execs         0  Namei        75
                                                Runqueue   12.5  Dirblk        0
Network  KBPS   I-Pack  O-Pack   KB-In  KB-Out  Waitqueue   0.0
en0     154.8    764.0   772.5    57.6    97.2
en1       0.1      0.5     0.5     0.1     0.1  PAGING           MEMORY
lo0       0.1      1.0     1.0     0.0     0.0  Faults      216  Real,MB   32128
                                                Steals        0  % Comp     29.2
Disk    Busy%     KBPS     TPS KB-Read KB-Writ  PgspIn        0  % Noncomp  71.6
hdisk3    3.5    102.0    21.0     0.0   102.0  PgspOut       0  % Client   71.6
hdisk0    2.5     20.0     5.0     0.0    20.0  PageIn        1
hdisk1    2.0     22.0     5.5     2.0    20.0  PageOut      54  PAGING SPACE
hdisk2    1.0    210.0    18.5     4.0   206.0  Sios         56  Size,MB   15744
dac0      0.0      0.0     0.0     0.0     0.0                   % Used     45.7
dac1      0.0    312.0    39.5     4.0   308.0  NFS (calls/sec)  % Free     54.2
hdisk4    0.0      0.0     0.0     0.0     0.0  ServerV2       0
cd0       0.0      0.0     0.0     0.0     0.0  ClientV2       0   Press:
hdisk5    0.0      0.0     0.0     0.0     0.0  ServerV3       0   "h" for help
                                                ClientV3       0   "q" to quit Name            PID  CPU%  PgSp Owner
oracle      1994848   6.7   6.9 oracle
oracle      1302662   6.5   6.0 oracle
oracle      2171122   6.5   6.7 oracle
oracle      2363444   6.5   5.7 oracle
oracle      1773740   6.5   5.6 oracle
oracle      2150436   6.5   5.9 oracle
oracle      2805790   6.5   5.2 oracle
oracle      2228420   6.4   6.1 oracle
oracle      1953872   6.4   5.3 oracle
oracle      2142238   6.4   4.6 oracle
oracle      2470006   6.4   5.3 oracle
oracle      2138304   6.4   5.5 oracle
oracle      1662988   6.3   6.1 oracle
oracle      1999086   6.2   4.7 oracle
oracle      1925318   6.2   5.4 oracle
……..
通过vmstat命令监控内存,虚拟内存利用率同样比较高,FREE(自由表)比较小,物理内存的大部分被用作为文件系统数据的缓存实用。
通过进程查找发现系统后台有大量oracle进程:
ps -ef|grep oracle|grep LOCAL=NO
  oracle  548922       1   0   Jul 21      -  0:25 oracleczcb (LOCAL=NO)
  oracle  561180       1   0   Jul 21      -  0:17 oracleczcb (LOCAL=NO)
  oracle  831668       1   0   Jul 21      -  0:27 oracleczcb (LOCAL=NO)
  oracle  839800       1   0   Jul 21      -  0:00 oracleczcb (LOCAL=NO)
  oracle 1110138       1   0   Jul 21      -  0:02 oracleczcb (LOCAL=NO)
  oracle 1253464       1   0   Jul 21      -  0:39 oracleczcb (LOCAL=NO)
  oracle 1364076       1   0   Jul 21      -  0:00 oracleczcb (LOCAL=NO)
  oracle 1417398       1   0   Jul 21      -  0:16 oracleczcb (LOCAL=NO)
  oracle 1429736       1   0   Jul 21      -  0:08 oracleczcb (LOCAL=NO)
  oracle 1437710       1   0   Jul 21      -  0:07 oracleczcb (LOCAL=NO)
  oracle 1441824       1   0   Jul 21      -  0:18 oracleczcb (LOCAL=NO)
  oracle 1454248       1   0   Jul 21      -  0:00 oracleczcb (LOCAL=NO)
  oracle 1519650       1   0   Jul 21      -  0:03 oracleczcb (LOCAL=NO)
  oracle 1527910       1   0   Jul 21      -  0:10 oracleczcb (LOCAL=NO)
  oracle 1536058       1   0   Jul 21      -  0:03 oracleczcb (LOCAL=NO)
  oracle 1540294       1   0   Jul 21      -  0:17 oracleczcb (LOCAL=NO)
  oracle 1548304       1   0   Jul 21      -  0:13 oracleczcb (LOCAL=NO)
…..
统计分析后发现有400多进程:
ps -ef|grep oracle|grep LOCAL=NO|grep -v grep|awk '{print $2}'|wc
406    3836   29155
数据库共运行有7个实例,经分析发现只有个别实例出现了大量请求未释放,请求连接从3月份到8月份,每个月逐渐累加,随着后台进程的慢慢积累,造成系统资源被大量占用,系统资源紧张,数据库系统逐渐变慢。
但是分析看很多进程为某天晚上积累,比如7月21号,0点后的操作累积了近50个挂起的连接,所以需要开发人员确认当天晚上是否做了系统变更引起,同样其他的挂起进程也需要检查。
通过如下语句查找对应月份的连接进程,kill该月份所有的挂起进程,系统资源被释放。
ps -ef|grep oracle|grep LOCAL=NO |grep Jul |grep -v grep |awk '{print $2}'|xargs kill -9
ps -ef|grep oracle|grep LOCAL=NO |grep Apr |grep -v grep |awk '{print $2}'|xargs kill -9
ps -ef|grep oracle|grep LOCAL=NO |grep Jun |grep -v grep |awk '{print $2}'|xargs kill -9
ps -ef|grep oracle|grep LOCAL=NO |grep Mar |grep -v grep |awk '{print $2}'|xargs kill -9
系统资源被释放:
Topas Monitor for host:    55A_1                EVENTS/QUEUES    FILE/TTY
Thu Aug  5 20:49:11 2010   Interval:  2         Cswitch     377  Readch  167.4K4
                                                Syscall    1158  Writech 253.2K0
Kernel    1.1   |#                           |  Reads        57  Rawin         0
User      0.5   |#                           |  Writes       25  Ttyout      345
Wait      0.4   |#                           |  Forks         0  Igets         0
Idle     98.1   |############################|  Execs         0  Namei        26
                                                Runqueue    0.5  Dirblk        0
Network  KBPS   I-Pack  O-Pack   KB-In  KB-Out  Waitqueue   0.0
en0       1.9      5.5     5.0     0.8     1.1
en1       0.2      1.0     1.0     0.1     0.1  PAGING           MEMORY
lo0       0.2      2.0     2.0     0.1     0.1  Faults       55  Real,MB   32128
                                                Steals        0  % Comp     25.2
Disk    Busy%     KBPS     TPS KB-Read KB-Writ  PgspIn        2  % Noncomp  75.6
hdisk1    4.9     35.8     8.9    11.9    23.9  PgspOut       0  % Client   75.6
dac0      0.0      0.0     0.0     0.0     0.0  PageIn        2
dac1      0.0    335.9    41.2     0.0   335.9  PageOut      65  PAGING SPACE
hdisk0    0.0     23.9     6.0     0.0    23.9  Sios         68  Size,MB   15744
hdisk2    0.0    246.5    23.4     0.0   246.5                   % Used     34.9
cd0       0.0      0.0     0.0     0.0     0.0  NFS (calls/sec)  % Free     65.0
hdisk3    0.0     89.4    17.9     0.0    89.4  ServerV2       0
hdisk4    0.0      0.0     0.0     0.0     0.0  ClientV2       0   Press:
hdisk5    0.0      0.0     0.0     0.0     0.0  ServerV3       0   "h" for help
                                                ClientV3       0   "q" to quit
Name            PID  CPU%  PgSp Owner
syncd        164026   0.7   0.5 root 
oracle      2805786   0.2   5.2 oracle
oracle      2289824   0.1   5.9 oracle
topas       2748538   0.1   2.5 oracle
oracle      2834676   0.0   4.1 oracle
oracle      1282162   0.0   4.0 oracle
 
编写shell脚本
#vi kill_no_local_connect.sh
#!/bin/sh
ps -e -o pid -o etime -o args|grep oracle|grep LOCAL=NO|grep ->/tmp/tmpfile
# ps -e -o pid -o etime -o args|grep oracle|grep LOCAL=NO|grep -|awk '{print $2}'|awk -F- '{print $1}'
cat /tmp/tmpfile|while read LINE
do
TIME=`echo $LINE|awk '{print $2}'`
TIME=`echo $TIME|awk -F- '{print $1}'`
if [ $TIME -gt 3 ]
then
echo $LINE|awk '{print $1}'|xargs -t -n1 kill -9
fi
done
rm -f /tmp/tmpfile
 
加入定时任务
0 23 * * * /opt/kill_no_local_connect.sh

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25369863/viewspace-688247/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-02-12

  • 博文量
    25
  • 访问量
    76380