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=""