メモリテストメモ
使えるねっとのVPSシルバーによると使用メモリは256M、最大メモリは512Mとなっています。
ここで稼動している商品メタ検索であるプロキオン通販案内と通販商品ナビ・Flashバージョンでも検索ヒット数の上限を十分にを考慮しておかないと、メモリ上限値に引っ掛かる可能性があります。
説明では最大メモリは512Mになっているが、実際はどこまで使えるのだろうか?
早速メモリ上限値に達したらどうなるか実験してみました。
テストプログラムはみかログさんにある計算プログラム(100万要素で0.4秒くらい.1000万要素にしたらスワップが入ってしまい...)を改造して実験しました。
#!/usr/bin/perl use strict; use Time::HiRes; my @data = map { rand(10) } (1..1000000); my $t0 = [Time::HiRes::gettimeofday]; my $sum = 0; foreach my $data (@data) { $sum += $data; } print $sum, "\n"; print Time::HiRes::tv_interval($t0), " Second\n";
まずは100万要素で実行!
-bash-3.1$ ./sumtest.pl 4997783.51318483 0.253154 Second Tasks: 62 total, 2 running, 60 sleeping, 0 stopped, 0 zombie Cpu(s): 11.8% us, 0.5% sy, 0.0% ni, 87.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 524288k total, 327220k used, 197068k free, 0k buffers Swap: 0k total, 0k used, 0k free, 0k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30477 ode 25 0 172m 148m 1728 R 98 29.1 0:03.37 sumtest.pl
172Mのメモリを使用しています。残りは197Mあります。
実行速度も0.25秒なので悪くないですね。
これなら200万要素でもたぶん大丈夫でしょう。
-bash-3.1$ ./sumtest.pl 10003166.9464646 0.506678 Second Tasks: 62 total, 2 running, 60 sleeping, 0 stopped, 0 zombie Cpu(s): 12.3% us, 0.0% sy, 0.0% ni, 87.6% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 524288k total, 477204k used, 47084k free, 0k buffers Swap: 0k total, 0k used, 0k free, 0k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11351 ode 25 0 318m 295m 1728 R 99 57.6 0:06.35 sumtest.pl
318M使用、残りは47Mです。
スワップサイズが0なので、300万要素では確実にメモリ不足になりそうです。
では実行します。
-bash-3.1$ ./sumtest.pl Out of memory! 終了しました
予想通りメモリ不足で強制終了しました。