お世話になります。
CentOS6.4を使ってPHPアプリを動かしています。
結構メモリを消費するアプリなので、
使っているうちにOutOfMemoryになることがあります。
※正常終了する場合もあります。
正常に終了しようがOutOfMemoryになろうが、
大量にメモリを確保した後は、そのまま解放されていないように見えます。
例えば、freeコマンドで見たときにに usedが減りません。
【例】
アプリケーション実行前
# apachectl restart
# free
total used free shared buffers cached
Mem: 16334660 472788 15861872 0 105700 120124
-/+ buffers/cache: 246964 16087696
Swap: 2047992 0 2047992
ここでアプリケーション実行し正常に終了。
# free
total used free shared buffers cached
Mem: 16334660 1754276 14580384 0 106836 120484
-/+ buffers/cache: 1526956 14807704
Swap: 2047992 0 2047992
apacheを再起動すればusedは減るのですが、
他にusedになっているメモリを開放する方法はあるのでしょうか?
また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>apacheを再起動すればusedは減るのですが、
>他にusedになっているメモリを開放する方法はあるのでしょうか?
ないです。
>また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。
多くの場合、プログラムがOSから借り受けたメモリはプログラムが終了するまでOSには返さず、
再度必要になったときのために備えておきます。
この回答への補足
そうですね。
OutOfMemoryで異常終了したときにメモリが解放されないという点についてはご説明のとおりで納得なのですが、正常終了しているケースでも解放されないとい点で、疑問を感じたものですから質問を投稿しました。
No.4
- 回答日時:
>OutOfMemoryで異常終了したときにメモリが解放されないという点についてはご説明のとおりで納得なのですが、正常終了しているケースでも解放されないとい点で、疑問を感じたものですから質問を投稿しました。
私が#2で書いた「プログラムの終了」というのは、今回の件でいえばphpモジュールを組み込んでいるapacheの事です。
あなたのいう「phpアプリ」の事ではないです。
phpアプリを動かしているプログラムといえばわかります?
この回答への補足
理解しました。
ついでに言えば、前回のご回答がヒントになりました。
apacheのMPM関係のパラメータをデフォルトにしていたのですが、apacheのプロセスが残る場合があるようですね。
現在は以下のとおり極端に小さい値で試行していますが、、
とりあえずメモリは解放されるようになりました。
<IfModule prefork.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 1
ServerLimit 1
MaxClients 1
MaxRequestsPerChild 1
</ifModule>
No.3
- 回答日時:
Linuxでは空きメモリをページキャッシュに使用します。
ページキャッシュとは、ファイルI/O を高速に行うため、最近参照
したファイルの内容のメモリ上へのキャッシュです。ページキャッ
シュはメモリ領域を専有しますが、他でメモリ必要になった場合は
開放される領域なので、空き領域として計上することができます。
ですから、厳密ではありませんが、freeを使ってメモリ使用量を算
出したい場合は、usedではなく、total - free - buffers - cached
で算出する必要があります。
ところで下記で強制的にページキャッシュを開放できますが、通常
はこれをやるメリットはありません。
# echo 1 > /proc/sys/vm/drop_caches
この回答への補足
なるほどです。
たしかに
-/+ buffers/cache: 1527988 14806672
となっていますね。
また、教えていただいた方法でページキャッシュを開放してみましたが、
元のキャッシュ容量が大きくないので、
格段に空きが増えるわけではないですね。
No.1
- 回答日時:
PHPはapacheのモジュールでうごいているのでしょうか?
またtopで観察していても変化はないでしょうか?
この回答への補足
PHPはモジュール版です。
LoadModule php5_module modules/libphp5.so
topで見ていても変化はありません。
質問の投稿から1時間経過しても以下のとおりです。
top - 14:09:42 up 22:25, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16334660k total, 1756508k used, 14578152k free, 108768k buffers
Swap: 2047992k total, 0k used, 2047992k free, 120696k cached
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CPU・メモリ・マザーボード Windows11アップデート後の不具合(メモリ不足)について 9 2023/01/04 11:34
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- 英語 Since there is no change in external dimensions, t 1 2023/04/03 22:42
- TOEFL・TOEIC・英語検定 辞書における do とdoing はどういう用法、意味ですか? 4 2022/06/12 17:49
- Firefox(ファイヤーフォックス) firefoxが頻繁に停止する 1 2023/01/09 10:26
- 英語 Collagens are the most common type used. この英文の文法的解 2 2022/07/28 10:08
- Mac OS MacのFinderでmovファイルのサムネイルが表示されないのと、クイックルックが出来ません。 こ 3 2023/07/24 18:40
- CPU・メモリ・マザーボード Windows10 64bitパソコンのメモリ 4GBから8GBへ増設 11 2023/01/25 18:20
- Outlook(アウトルック) outlook メモリ不足 1 2022/05/31 10:16
- 英語 並べるのを避けるべき似た単語の判断基準について 5 2022/05/30 09:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリの「コミット済み」の意...
-
Windows98SE ・Meの動作「上限...
-
最先端のCPUを詰んだAndroidス...
-
backing storeって何ですか?
-
実装メモリとタスクマネージャ...
-
メモリ割り当ての増やし方
-
OSの32bit 64bitの違いを教えて...
-
マルチタスクOSとCPUについて
-
WinAPIのGetLocalTimeの分解能は?
-
MacとWinのメモリの違いについて
-
Windows XPの32ビット版と6...
-
時間が経つとPCが重くなるので...
-
スピーカーのプロパティが開か...
-
Windows7メモリ使用量が常時2.5...
-
WindowsアップデートでExcelが...
-
アプリケーションエラーについて
-
macbook,leopardをsnow~に
-
低スペックに向いたlinux
-
macが勝手に再起動を繰り返すの...
-
i macとmac mini おすすめは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メモリの「コミット済み」の意...
-
Windows98SE ・Meの動作「上限...
-
最先端のCPUを詰んだAndroidス...
-
vmstatで、メモリ使用率を計算する
-
MacとWinのメモリの違いについて
-
MacBookを買おうと思ってるので...
-
実装メモリとタスクマネージャ...
-
会計ソフトJDL macで使いたい W...
-
メモリ割り当ての増やし方
-
仮想メモリ
-
仮想メモリとページファイルの...
-
皆様に聞きたいです。
-
Windows XPの32ビット版と6...
-
MinecraftのJava版が起動しません
-
backing storeって何ですか?
-
WindowsアップデートでExcelが...
-
Finderが暴走してCPUを独占
-
Mac でDTM する際 Mac book air...
-
Windows 32BitOS上で稼動するOr...
-
古いwindowsPCをどのように使う...
おすすめ情報