- 締切済み
oracleのメモリ使用量が97%ほどに・・・減らしたいです
いつもお世話になります。 oracle8.1.7がインストールされている Linux サーバに関して、現在メモリ使用量が逼迫しているためか、 時々OSの処理が重くなり、応答が無くなる事が多々発生して困っています。 Database:Oracle 8.1.7 Enterprise Edition Linux:RedHat Linux 6.2 freeコマンドで調べたところ、 --------------------------------------------------------------------------- [root@sample dir1]# free total used free shared buffers cached Mem: 2073296 1996752 76544 1575952 112904 813364 -/+ buffers/cache: 1070484 1002812 Swap: 2097136 2536 2094600 --------------------------------------------------------------------------- topコマンドで調べたところ(Shift + M でメモリ使用順としました) --------------------------------------------------------------------------- 6:05pm up 5:06, 2 users, load average: 0.22, 0.11, 0.10 69 processes: 66 sleeping, 1 running, 0 zombie, 2 stopped CPU states: 17.3% user, 1.4% system, 0.0% nice, 81.1% idle Mem: 2073296K av, 1996832K used, 76464K free, 2385012K shrd, 110684K buff Swap: 2097136K av, 2632K used, 2094504K free 816100K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 1672 oracle 0 0 848M 848M 847M S 604M 0.0 41.9 13:47 oracle 1710 oracle 4 0 458M 458M 456M S 445M 1.5 22.6 13:03 oracle 1767 oracle 6 0 350M 350M 348M S 337M 2.3 17.3 10:17 oracle 1764 oracle 6 0 347M 347M 342M S 331M 2.3 17.1 4:38 oracle 1915 oracle 16 0 84564 82M 80532 S 68M 29.2 4.0 0:59 oracle 1688 oracle 0 0 74804 72M 73592 S 71M 0.0 3.5 0:36 oracle 1677 oracle 0 0 62808 61M 61100 S 46M 0.0 3.0 0:44 oracle 848 oracle 0 0 39160 38M 37960 S 36M 0.0 1.8 0:01 oracle 854 oracle 0 0 30092 29M 29632 S 25M 0.0 1.4 0:01 oracle 852 oracle 0 0 14592 14M 14144 S 9.8M 0.0 0.7 0:02 oracle --------------------------------------------------------------------------- ※10件のみとしました 上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の 応答が無くなると推測しています。 上記を改善するために、init.ora 内の以下の項目を編集しようと考えていますが、数値を決めかねています。 サーバがフリーズ状態(僅かながらもゆっくり動いている)原因について、 何でも結構ですので、アドバイスいただけたらと思います。よろしくお願いいたします。 open_cursors = 1000 max_enabled_roles = 30 db_block_buffers = 64000 shared_pool_size = 524288000 large_pool_size = 1048576 java_pool_size = 0 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 processes = 150 log_buffer = 532480 db_block_size = 8192 sort_area_size = 1048576 sort_area_retained_size = 1048576
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- abby14
- ベストアンサー率0% (0/1)
>上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の 応答が無くなると推測しています。 このような状況になってしまうSQL処理があるのでしょうか? だとしたらそのSQLのチューニングを行うのがベストだと思います。 OSからの監視ツールではなく、oracleの監視ツール(TOPSESSION等) を使用してみてはどうでしょうか。
- joih
- ベストアンサー率35% (37/105)
うーん、スラッシングかも。 何か重たい処理を実行したときに、ディスクとCPUの利用率をグラフにすると、きれいに上下に波うってると思います。 複数インスタンスが稼動してるようですが、DBそのもののメモリ使用量をさげても根本的な解決にはならないきがしますので、 shared_pool_size = 524288000 この値を下げると良いとかは、ちょっといえませんね・・・ メモリ追加か、DBインスタンスを他に移すとかが良いのでは。
補足
返信ありがとうございました。 複数インスタンスは起動していないようでした。 3日後に再度同コマンドを実行し、oracle のメモリ使用率を全て合計したところ42.4%程となっており、使用率が下がっていました。にも関わらず、メモリ 2073296K のうち、1985032K のメモリを消費しており・・・謎です。 topコマンドで調べたところ(Shift + M でメモリ使用順としました) --------------------------------------------------------------------------- 9:11pm up 3 days, 8:12, 1 user, load average: 0.95, 0.38, 0.14 62 processes: 60 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 0.0% user, 50.8% system, 0.0% nice, 49.1% idle Mem: 2073296K av, 1985032K used, 88264K free, 907912K shrd, 42668K buff Swap: 2097136K av, 2036K used, 2095100K free 885768K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 1986 oracle 0 0 510M 510M 509M S 289M 0.0 25.2 5:26 oracle 1688 oracle 0 0 92608 90M 91348 S 79M 0.0 4.4 0:37 oracle 1677 oracle 0 0 86280 84M 84556 S 60M 0.0 4.1 0:48 oracle 848 oracle 0 0 63232 61M 62032 S 60M 0.0 3.0 0:05 oracle 854 oracle 0 0 43048 41M 42580 S 36M 0.0 2.0 0:03 oracle 8062 oracle 0 0 23544 22M 22632 S 8964 0.0 1.1 0:00 oracle 8601 oracle 0 0 20316 19M 19332 S 12M 0.0 0.9 0:02 oracle 852 oracle 0 0 11244 10M 10796 S 9.8M 0.0 0.5 0:27 oracle 867 oracle 0 0 7564 7420 6952 S 3684 0.0 0.3 0:00 oracle 8066 oracle 0 0 7116 7116 6544 S 816 0.0 0.3 0:00 oracle --------------------------------------------------------------------------- ※10件のみとしました 以下は Shift + M を押下せず、topコマンドをそのまま実行 --------------------------------------------------------------------------- 9:12pm up 3 days, 8:13, 1 user, load average: 1.05, 0.49, 0.19 62 processes: 60 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 0.0% user, 50.8% system, 0.0% nice, 49.1% idle Mem: 2073296K av, 1985060K used, 88236K free, 907912K shrd, 42684K buff Swap: 2097136K av, 2036K used, 2095100K free 885768K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 648 root 0 0 732 680 580 R 0 99.9 0.0 1172m dpteng 8633 oracle 0 0 868 868 668 R 0 1.7 0.0 0:00 top 1 root 0 0 472 472 400 S 0 0.0 0.0 0:06 init --------------------------------------------------------------------------- ※3件のみとしました なお、init.oraの編集はしないことにします。 /usr/dpt/dpteng(不明)が99.9%CPUを消費しているのも関係あるかもしれませんが、これも怪しいかも・・・。
- ishi7474
- ベストアンサー率32% (71/216)
複数のインスタンスを同時に起動しているということはありませんか。
お礼
早速の回答ありがとうございます。 以下を確認したところ、インスタンスは一つのみでしたので、 複数起動していることは無さそうでした。 /var/oracle/app/admin/○○○
お礼
返信ありがとうございました。 97%となってしまうときもあれば、普段は40%のメモリ使用量で安定 しているときもあります。原因が分からないのが困りものですが・・・。 規模の大きなWebアプリケーションのため、全てを調査となると、もう 本当に不可能に近いくらいの時間がかかってしまいます。 なぜか、このサーバだけ発生するんですよね・・・。 監視ツール Oracle Top Sessions というものがあるのですね。 調べてみたいと思います。ありがとうございました。