PHPの利用可能メモリを制限する

PHPには、利用可能メモリの設定というのがあります。PHPのアプリケーションプログラムが無制限に多くのメモリを消費してしまうことを防ぐためです。

php.iniのmemory-limitパラメータで指定されています。デフォルトでは128Mバイトです。

これを少なく設定した方が、プログラムの不具合などによりメモリが大量に消費し始めた際に、よりその影響が小さい段階で制限値に達し、プログラムは強制終了させられるようになります。

参考として、次のようなデフォルト値以下で運用していくことも検討してみてください。

memory-limit = 16M ~ memory-limit = 128M

PHP のパフォーマンスチューニング

LAMP環境(Linux-Apache httpd-MySQL-PHP)におけるWebアプリケーションのパフォーマンスチューニングにおいて、ここではPHPに関するポイントを整理しておきたいと思います。 なお、記事投稿時点でのPHPは、バージョン5.3.9です。

1.実行コードキャッシュ

コンパイル言語ではなくインタープリター言語であるPHPでは、同じコードの構文解析・コンパイルを繰り返さないことがパフォーマンス上の重要なポイントです。

そこで、構文解析・コンパイル後のコード(実行コード)をキャッシュすることで、同じコードを使用する二度目以降のリクエストについては、キャッシュされた実行コードを使用することができるようになります。

そのような実行コードのキャッシュ機能は、

eAccelerator APC(Alternative PHP Cache)

を利用することで実現できます。

eAcceleratorについては『PHP~パフォーマンス向上策』『PHP~パフォーマンス向上策(続報)』をご覧ください。

2.PHPの設定

下表のように、php.iniのパラメータのいくつかを適切に設定することが重要です。

phpiniの変更後は、httpdを再起動もしくは設定再読込をして、設定を反映させる必要があります。

php.iniパラメータ 設定の説明 設定例 register_globals 無効にする。 register_globals = Off magic_quotes_gpc 無効にする。 magic_quotes_gpc = Off magic_quotes_runtime 無効にする。 magic_quotes_runtime = Off magic_quotes_sybase 無効にする。 magic_quotes_sybase = Off always_populate_raw_post_data 無効にする。 always_populate_raw_post_data = Off output_buffering 有効にする。推奨設定値は4096バイトとなっています。 output_buffering = 4096(単位:バイト) realpath_cache_size 必要に応じて設定する。PHPがオープンするファイル数が多い場合には、この値を増やすとファイル操作のパフォーマンス向上の効果が期待できます。 realpath_cache_size = 16k(単位:バイト) realpath_cache_ttl 続きを読む »

ダウンロードファイルのmd5ハッシュ値を確認する

wgetでパッケージファイルをダウンロードをしてきた後に、そのファイルの真偽をチェックするために、md5(128bit)ハッシュ値を確認する必要が出てきます。 その確認には、次のようにチェックサムコマンドを実行します。

[root ~]# md5sum ファイル名 md5ハッシュ値 ファイル名

表示されたmd5ハッシュ値を、公開されているハッシュ値と目視比較して、一致していれば真の正しいファイルと判断します。

なお、OpenSSLコマンドでも次のように実行することで同様の結果が得られます。

[root ~]# openssl md5 ファイル名 MD5(ファイル名)= md5ハッシュ値

MySQL 5.5.20 へのバージョンアップ( 5.5.19 ⇒ 5.5.20)

MySQL 5.5.20 が2012年1月10日にリリースされました。 早速、アップデートしましたので、記録として手順を掲載しておきます。 ちなみに、アップデートに使用したRPMパッケージがリリースされたのは2012年1月12日です。

なお、変更点については下記を参照してください。

http://dev.mysql.com/doc/refman/5.5/en/news-5-5-20.html 1.新しいパッケージファイルのダウンロード [root ~]# wget http://rpms.famillecollet.com/enterprise/5/remi/i386/mysql-5.5.20-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/mysql-libs-5.5.20-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/mysql-server-5.5.20-1.el5.remi.i386.rpm 2.MySQLのシャットダウン [root ~]# service mysqld stop mysqld を停止中: [ OK ] 3.新しいパッケージファイルのインストール [root ~]# yum update mysql-5.5.20-1.el5.remi.i386.rpm mysql-libs-5.5.20-1.el5.remi.i386.rpm mysql-server-5.5.20-1.el5.remi.i386.rpm (略) Updated: mysql.i386 0:5.5.20-1.el5.remi mysql-libs.i386 0:5.5.20-1.el5.remi mysql-server.i386 0:5.5.20-1.el5.remi Complete! 4.MySQLのスタートアップ [root ~]# service mysqld start mysqld を起動中: [ OK ] 5.MySQLのバージョン確認 [root 続きを読む »

PHP 5.3.9へのアップデート(5.3.8 ⇒ 5.3.9)

PHP 5.3.9 がリリースされました。 セキュリティ関連も含めて、90以上のバグフィックスが行われたようです。 詳しくは『PHP 5.3.9 Released!』をご覧ください。

1.新しいパッケージファイルのダウンロード

当サイトの環境でインストールしているPHPのパッケージは次の通りです。

php php-cli php-common php-devel php-eaccelerator php-mbstring php-mysql php-pdo

これらのアップデートパッケージをすべてダウンロードしてきます。

[root ~]# wget http://rpms.famillecollet.com/enterprise/5/remi/i386/php-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-cli-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-common-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-devel-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-eaccelerator-0.9.6.1-10.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-mbstring-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-mysql-5.3.9-1.el5.remi.i386.rpm http://rpms.famillecollet.com/enterprise/5/remi/i386/php-pdo-5.3.9-1.el5.remi.i386.rpm 2.新しいパッケージファイルのインストール [root ~]# yum update php-5.3.9-1.el5.remi.i386.rpm php-cli-5.3.9-1.el5.remi.i386.rpm php-common-5.3.9-1.el5.remi.i386.rpm php-devel-5.3.9-1.el5.remi.i386.rpm php-eaccelerator-0.9.6.1-10.el5.remi.i386.rpm php-mbstring-5.3.9-1.el5.remi .i386.rpm php-mysql-5.3.9-1.el5.remi.i386.rpm php-pdo-5.3.9-1.el5.remi.i386.rpm (略) Updating : php-common 1/16 Updating : php-cli 2/16 Updating : php 続きを読む »