Pythonスクリプトのバイトコンパイル

6. モジュール | 「コンパイル」された Python ファイル

昨日から、あるサイトのバナーが複数出稿され(mixiをログアウトすると見られるかも)、今日の夕方になってアクセスが急増、APサーバの負荷が無茶苦茶上がってダウン寸前といった状態になっていた。

サーバサイドはDjango(mod_ptyhon)。ApacheのプロセスがMAX付近まで立ち上がってるけど、DBへの接続は少ない。そしてCPUのロードアベレージは凄いことになっていた。
そんな負荷が掛かるプログラムはないはずなのに何故?と、サーバ内をさまよっていて、ふと .pyc ファイルが作られていないことに気付いた。Apacheの実行ユーザから .py ファイルがあるディレクトリへの書込権限がなかったのが原因とすぐに分かったので、ちょっとでも負荷が下がるかもと思い、パーミッションを変更して対応。

ところが、この変更だけで、つまり .pyc ファイルが作られただけで、Apacheのプロセスは見る見る減って負荷も通常の状態に戻った。「えっ、これが原因なの!?」と、拍子抜け。

Pythonスクリプトのバイトコンパイルは負荷が掛かるものなんだと学んだ。

Last updated on July 8, 2015