PHPのパフォーマンスを改善!Memcachedのインストールと基本設定メモ
はじめに
Webアプリケーションを運用していると、「データベースへのクエリが多すぎて、ページの表示が遅い…」といったパフォーマンスの問題に直面することがあります。
そんな時、手軽に導入できて絶大な効果を発揮するのが、インメモリキャッシュシステムの 「Memcached」 です。
この記事では、自身のWikiに書き溜めていたメモを元に、CentOS系のLinuxサーバーにMemcachedをインストールし、PHPから利用するための基本的な手順をまとめます。
Memcachedとは?
Memcachedは、情報をサーバーのメモリ上に高速に保存・読み出しするための、シンプルなキー・バリュー型ストアです。
頻繁にアクセスされるデータベースのクエリ結果や、APIのレスポンスなどを一時的にMemcachedに保存(キャッシュ)しておくことで、低速なディスクアクセスを減らし、アプリケーション全体の応答速度を劇的に向上させることができます。
Step 1: Memcachedのインストール
まずはyum
(またはdnf
) を使って、Memcached本体と、PHP拡張をコンパイルするために必要な開発用ファイルをインストールします。
sudo yum install memcached memcached-devel
Step 2: PHP用拡張機能のインストール
次に、PHPからMemcachedサーバーと通信するための「通訳」となるPHP拡張機能をインストールします。
memcache
とmemcached
という2つの拡張機能がありますが、新しいプロトコルや機能をサポートしている**memcached
(d付き)**の利用を推奨します。
# libmemcachedライブラリをインストール(php-memcachedが依存)
sudo yum install libmemcached libmemcached-devel
# PECLを使ってphp-memcachedをインストール
sudo pecl install memcached
インストール後、php.ini
に拡張機能を追加するのを忘れないようにしましょう。
extension=memcached.so
最後にApacheやphp-fpmを再起動すれば、PHPからMemcachedが利用可能になります。
Step 3: Memcachedの基本設定
Memcachedの設定は/etc/sysconfig/memcached
ファイルで行います。
特に重要なのは、キャッシュとして使用するメモリサイズと、最大同時接続数です。
# 使用するポート番号(デフォルトは11211)
PORT="11211"
# 待ち受けるユーザー(デフォルトはmemcached)
USER="memcached"
# 最大同時接続数
MAXCONN="1024"
# キャッシュサイズ(MB単位)
CACHESIZE="64"
# オプション(基本はlocalhostからの接続のみ許可)
OPTIONS=""
CACHESIZE
は、サーバーの搭載メモリに応じて適切なサイズに調整してください。
Step 4: サービスの起動とPHPからの接続確認
設定が完了したら、memcachedサービスを起動します。
# memcachedを起動
sudo systemctl start memcached
# OS起動時に自動起動するように設定
sudo systemctl enable memcached
最後に、PHPから正しく接続できるか、簡単なテストスクリプトで確認してみましょう。
test_memcached.php
<?php
$mc = new Memcached();
$mc->addServer('127.0.0.1', 11211);
$key = 'test_key';
$value = 'Hello, Memcached!';
// データを60秒間キャッシュに保存
if ($mc->set($key, $value, 60)) {
echo "「{$value}」をキー「{$key}」でキャッシュしました。\n";
} else {
echo "キャッシュの保存に失敗しました。\n";
}
// キャッシュからデータを取得
$retrieved_value = $mc->get($key);
if ($retrieved_value) {
echo "キャッシュからデータを取得しました: {$retrieved_value}\n";
} else {
echo "キー「{$key}」のデータは見つかりませんでした。\n";
}
?>
このスクリプトをコマンドラインで実行し、Hello, Memcached!
と表示されれば、設定は成功です。
おわりに
データベースの負荷軽減は、Webアプリケーションのパフォーマンスを向上させる上で最も重要なチューニングの一つです。Memcachedは、そのための非常に強力でシンプルな解決策となります。
ユーザーセッションの保存場所として利用したり、重いDBクエリの結果をキャッシュしたりと、用途は様々です。ぜひ、あなたのアプリケーションにも導入を検討してみてください。
この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MyNote by MEANTIX
Discussion