« 2008年06月 | メイン | 2008年08月 »
2008年07月07日
Apache PHP emalloc() でエラー
HTTPのPOSTで、非常に大きなサイズのデータを受け取る必要があり、試行錯誤しているんですがなかなか解決しません。
Error.logには「emalloc(): Unable to allocate 1407033033 bytes」が連発です。
(まー、1G超をPOSTってどうよ・・って思うんですが、なにぶんここ最近急激な変化があったもので、仕方なかったんですぅ)
プログラム自身を見直すのが一番の近道で本道なんでしょうが、自社内だけの話ではなく、先方のプログラムも変更をしなければならないので、何か方法な無いものかと探していました。
エラーメッセージからすると、当然mallocから推測できるように、メモリ確保の失敗が原因らしいですが、何をどうしたら直るのかがわかりません。
PHPの設定は当然大きな値に変更しましたが、まったく状況は変わりません。
・・・・・・・・ということで、いろいろと情報を探ってみると
住商情報システムさん?株式会社アライドエンジニアリングさん?
http://www.scs.co.jp/advc/techinfo_linux.html
とか、大規模なシステムを組んでいるところから、いくつか技術情報がでてました。
----------------------上記サイトより抜粋--------------------------------
x86 (386, 486, Pentium ...) の Linux では, 最新のカーネルを使えば 64GB まで使える, などと聞かれたことがあるかも知れませんが, これはシステム全体として使えるメモリサイズで, 1 プロセスではこんなに使えません。 まず,32bit のアーキテクチャということで 4GB (2^32B) の壁 があるのですが,実は更に制限があります。 簡単にまとめますと,
1回の malloc のサイズが 128kB 以下のものの合計:約 1GB まで
1回の malloc のサイズが 128kB 以上のものの合計:約 2GB まで
・・・・・・・・
---------------------------------------------------------------
このようなことは、当然Linuxの技術文書にも載っていることとは思いますが、なにぶんエイゴはマッタクダメデース。
大変助かりました。
解決したわけではありませんが、原因がわかりすっきりしたところで、プログラムの変更です。
原因がわからないままでのプログラム変更は絶対にしたくない性質なので、これでさくさく仕事が進みそうです。
2008年07月06日
自宅サーバー 冷却装置の作成 その4
サーバー冷却の稼動状況を確認するために、こんなページをを作りました。
mrtg
fan1: 8881 RPM (min = 3000 RPM, div = 2)
fan2: 8544 RPM (min = 3000 RPM, div = 2)
temp: +39.0ーC (limit = +60ーC, hysteresis = +50ーC)
ファンの回転数とCPU温度はsensorsの返りを整形して、下のスーパー冷却装置の画像はUSBカメラとffmpegの組み合わせで取得しました。
これで何処にいても携帯から確認が取れて、更に冷却装置の遠隔操作も自由自在です。
海外にいてもOKです。(パケ代が高そうですが・・)
いずれは温度で電源を自動で操作しようと思ってますが、夏の間だけなのでしばらくは様子を見てみます。
(冷える場所がサーバー近辺だけなので、エアコンの温度センサーは室温で認識してまってます。エアコンの設定温度を30度にしてても、運転しっぱなしです。きをつけナイト)
2008年07月03日
自宅サーバー 冷却装置の作成 その3
ひとまず完成。
どうですか、この手作り感満載のシステムは!
かかった費用は約6000円ほどです。
全貌はコチラ
素人丸出しですね。でもね、でもいいんです。
実用的な電子工作で、初めてきちんと動いてくれてるんですヨ。
十分満足です。