🚀

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拡張機能をインストールします。

memcachememcachedという2つの拡張機能がありますが、新しいプロトコルや機能をサポートしている**memcached(d付き)**の利用を推奨します。

# libmemcachedライブラリをインストール(php-memcachedが依存)
sudo yum install libmemcached libmemcached-devel

# PECLを使ってphp-memcachedをインストール
sudo pecl install memcached

インストール後、php.iniに拡張機能を追加するのを忘れないようにしましょう。

php.ini
extension=memcached.so

最後にApacheやphp-fpmを再起動すれば、PHPからMemcachedが利用可能になります。

Step 3: Memcachedの基本設定

Memcachedの設定は/etc/sysconfig/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
https://meantix.com/

Discussion