ここのところ当ブログのサーバーがCPU100%に張り付いて無応答になることが頻発していたので、ApacheとかPHPとかAPCとかWordPressプラグインとか、あーでもないこーでもないと色々いじっていました。
何をやっても改善しないので、ふとテーマファイルをWordPressについてきたものに変えてみると、サーバの負荷がぴたりとおさまりました。まさかテーマファイルが原因だったとは。
ということで、真の原因はまだ見てないのですが、時間が取れるまでこのテーマのままになります。
ここのところ当ブログのサーバーがCPU100%に張り付いて無応答になることが頻発していたので、ApacheとかPHPとかAPCとかWordPressプラグインとか、あーでもないこーでもないと色々いじっていました。
何をやっても改善しないので、ふとテーマファイルをWordPressについてきたものに変えてみると、サーバの負荷がぴたりとおさまりました。まさかテーマファイルが原因だったとは。
ということで、真の原因はまだ見てないのですが、時間が取れるまでこのテーマのままになります。
サーバーをMySQL5.0から5.5に変えたら、symfony1.2+propelでbuild:allした際に生成されたSQLがエラーで動かなくなりました。
このようなエラー
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘Type=InnoDB’ at line 13
MySQL5.1以降で、テーブルのエンジン指定でtype=が使えなくなり、engine=と書かなければいけなくなったようです(table_optionのところ)。propel1.4以前のジェネレーターでは”type=InnoDB”のようなSQL文を生成しているので、古いpropelを使っているsymfony1.xではMySQLを5.1以上に変更した際にテーブルが生成できなくなってしまいます。
symfony1.2がpropel1.3-devを更新することはなさそうなので、これを回避するには、自分でpropelにパッチをあてることになります。
(symfony)/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php
163行目の
$script .= “Type=$mysqlTableType”;
を、
$script .= “Engine=$mysqlTableType”;
に修正。
ここのところ普段と違うパソコンを使っているのですが、そこでPHP/symfonyの開発環境を構築する必要があり、ひさしぶりに、Windowsの簡単ウェブ開発環境インストーラXamppを使ってみました。
# 普段はビルド済のPHPとMySQL, Apacheをダウンロードして入れています。これでも手抜きと言われるかもしれませんが
xamppのサイトから、Windows版 1.7.0 ベーシック版 インストーラ(xampp-win32-1.7.0-installer.exe)というやつをダウンロードして実行するだけです。
それで、xamppについてくるサンプルや静的なページは問題なく動くのですが、symfonyで作ったアプリケーションを呼び出そうとすると、PHPがApacheを巻き込んで落ちてしまいます。
Apacheのログにはこんなエラーが
いったいこれは何だ、ということで類似の問題が起こってないか検索してみたところ、このフォーラムにたどり着きました。XAMPP 1.7.0のインストーラが展開するdllが、XAMPPの中のMySQLと合致していないために起こると読みました。
フォーラムに書かれているとおり、
c:\xampp\php\libmysql_5.0.51a.dll
c:\xampp\php\ext\php_mysql_5.0.51a.dll
c:\xampp\php\ext\php_mysqli_5.0.51a.dll
を、それぞれ”_5.0.51a”のない方に上書きすることで、エラーは無くなりました。問題が解決するdllまで一緒に配布しているということは、原因は把握されてるんじゃないかと思うのですが、なんでこうなってるんでしょう。今これをやってるのがWindows 2000なので、XPやVistaでは問題ないのかしら。
というわけで、XAMPPで簡単にPHP開発環境ができることは確認できたのですが(上記の問題で何時間も使ったので簡単でもないという話も)、XAMPPの設定するphp.iniはいくつか微妙ですね。いまどきmagic quoteオンとかshort tagオンとか。E_NOTICEがオフになってたのでオンにしたら、XAMPP自身のトップページが警告を出しちゃうし。
WindowsのXAMPPでそのまま本番環境にする人はあんまりいないだろうとは思いますけど、万一自宅サーバとかでそういうことをするなら、php.iniは上から下まで読んで設定しなおしたほうがよさそうです。
[追記] Windows XPでも同様のエラーになるそうです
Flickr上で先月出された「このグラフの変化は何?」というクイズ
答えは、「PHP5に移行したFlickr.comのサーバのCPU利用率」ということでした。サーバのスクリプトエンジンをPHP5に切り替えた際に、上記のようなCPU利用率の削減が見られたということです。
このクイズを出したのは、Yahoo/Flickrでキャパシティ・プランニングを担当するジョン・アルスポーさん。先週のWeb2.0 ExpoでFlickrのサーバマシン入れ替えとパフォーマンス改善について話されています。
Web2.0 Expoのスライドで話されているのは、以下のような内容です。
未読ですが、この人のこの本もこのあたりについての本のようですね。
[am]4873113997[/am]
via Kitchen Soap
まだVistaへのホームマシン移行をやってます。
MySQL 5.0 Community Serverの今日のところの安定最新版5.051aをWindows Vista Home Premiumにインストールしようとしてつまったのでメモ。
まず、UACはとうの昔に切ってます。MySQL以外にも面倒が起こったのでつい。セキュリティセンターには叱られっぱなしです。
インストールを起動してTypicalでインストールは終了するのだけれど、そのあとConfigurationのコマンド(MySQL Server Instance Config Wizard)がエラーで起動できません。エラーメッセージはこれ。
指定されたファイルに対してこの操作を行うプログラムが関連付けられていません。コントロール パネルの [関連付けを設定する] でプログラムを関連付けてください。
何を何に関連づけるのか、さっぱりわかりません。このエラーメッセージの元ネタ、英語版を探すと
“This file does not have a program associated with it for performing this action. Create an association in the Set Associations control panel”
のようなので、MySQLとこのメッセージで検索すると、このページが出てきます。
この手順でこのエラーを回避できたよ、という話なので、したがってみることに。リンク先のバグレポートの回答にも関連した情報があります。
指定されたResource Hackerをダウンロードして実行。日本語翻訳版があるようです。(Windowsの開発環境を持ってる人ならResource Hackerを使わなくてもリソースの編集はできます)
MySQLInstanceConfig.exeファイルをリソースハッカーで開きます。/24/1/1033を開いて、”asAdministrator”を”requireAdministrator”に編集。スクリプトをコンパイルして保存、終了。
これで、MySQLInstanceConfig.exeが起動するようになります。
バグということで認識されているので、そのうち修正版が出るでしょう。