masalibの日記

システム開発、運用と猫の写真ブログです

memcachedのインストールと確認手順について

f:id:masalib:20170510013748j:plain
memcachedのインストールと確認手順を忘れるのでメモする

インストール

sudo yum install memcached -y
自動起動設定
sudo chkconfig memcached on
設定ファイルの変更
sudo vim /etc/sysconfig/memcached

以下、設定内容(下記がデフォルトのはず・・・)
PORT="11211" # ポート番号
USER="memcached" # 実行ユーザ
MAXCONN="1024" # 最大接続数
CACHESIZE="64" # メモリサイズ
OPTIONS="" # オプション

サービスの起動
sudo service memcached start
#sudo service memcached restart (いつもはこっち)

memcachedに書き込みテスト

phpが動いているサーバーに開発用フォルダを作成して.htaccessとsession.phpを置く

public/testxxxxx/session.php

<?php
session_start();

if (! isset($_SESSION['count'])) {
   $_SESSION['count'] = 0;
} else {
   $_SESSION['count']++;
}

$_SESSION['__ci_last_regenerate'] = time();

echo 'count:'. $_SESSION['count'];
echo '<br>';
echo 'ci_last_regenerate:'. $_SESSION['__ci_last_regenerate'];

public/testxxxxx/.htaccess

php_value session.save_path "XXX.XXX.XXX.XXX:11211"
php_value session.save_handler memcached

curlでアクセスすると以下のような出力する
count:3
ci_last_regenerate:1494294930

確認について

確認しなくて動いていますと言われて
サービス開始、3日前に気がついたという悪夢があるので確認は必須です

確認用のスクリプトmemcachedの公式のgithubからダウンロードする
(はいっていない場合は・・・・)

cd /var/opt/
git clone https://github.com/memcached/memcached

cd /var/opt/memcached/scripts
./memcached-tool XXX.XXX.XXX.XXX:11211 dump
ダンプにテストした結果がでてきたらOK

確認ができたらフォルダ単位で.htaccessとsession.phpは削除する
なおphp.iniの場合
session.save_handler = memcached
session.save_path = XXX.XXX.XXX.XXX:11211

補足

XXX.XXX.XXX.XXXはmemcachedをインストールしたサーバー
確認用のPHP,memcached-toolを配置するのはインストールしたサーバーじゃなくても問題ない


追記
運用しているとmemcachedのメモリがたりなくなるので
設定は8割ぐらい使うようにする

PORT="11211"
USER="memcached"
MAXCONN="65535"
TOTAL=`free -m | head -2 | tail -1 | awk '{print $2}'`
CACHESIZE="`echo "$TOTAL * 0.8" | bc | awk -F '.' '{print $1}'`"
OPTIONS=""


WEBサーバーと併用している場合は5割ぐらいにする

PORT="11211"
USER="memcached"
MAXCONN="65535"
TOTAL=`free -m | head -2 | tail -1 | awk '{print $2}'`
CACHESIZE="`echo "$TOTAL * 0.5" | bc | awk -F '.' '{print $1}'`"
OPTIONS=""