■Scheduler、woker起動
deployタスク内に下記タスクを定義

desc "タスクの説明文"
task :タスク名, roles: :app do
  run "(cd #{current_path} && QUEUE=* nohup bundle exec rake environment resque:work RAILS_ENV=#{rails_env} > /dev/null 2>&1 &) && sleep 1", :pty => true
  run "(cd #{current_path} && QUEUE=* nohup bundle exec rake environment resque:scheduler RAILS_ENV=#{rails_env} > /dev/null 2>&1 &) && sleep 1", :pty => true
end


killのために、起動時にfileを作成して残しておく
作成

cd *** && pgrep -p 1 -f resque > pid_list.txt


読み込み&kill

cat pid_list.txt | xargs kill


■Redisのresqueデータの説明
redis−cliの接続コマンド

redis-cli -h サーバ名(IPでも) -p 6379


データ取得コマンド
keys * すべてのキーを取得

キーの説明
値の取得コマンドと値の例

1) "ElastiCacheMasterReplicationTimestamp"
 AWSElastiCacheのタイムスタンプ(resqueとは無関係)

2) "[namespace]:worker:[実行サーバIPアドレス]:8846:*"
 workerが起動されているサーバのIPとプロセスのPID、最後に実行したジョブとその時刻
 コマンド:get
 "{\"queue\":\"batch\",\"run_at\":\"2015-02-07T14:25:00Z\",\"payload\":{\"class\":\"[クラス名]\",\"args\":}}"

3) "[namespace]:delayed:last_enqueued_at"
 ジョブが最後にキューに登録された時刻
 コマンド:hvals
  1) "2015-02-08 14:49:00 +0900"

4) "[namespace]:worker:[実行サーバIPアドレス]:8846:*:started"
 最後にworker:[実行サーバIPアドレス]:8846でジョブが開始された時刻
 コマンド:get
 "2015-02-07 23:12:15 +0900"

5) "Redis::Mutex:[ジョブ名]"
 排他制御用のpage_view_counterのロック値
 コマンド:get
 1421322711.8214214

6) "[namespace]:workers"
 redisに接続しているワーカープロセスのサーバIPとプロセスのPID
 コマンド:smembers
 1) "[サーバIPアドレス]:1234:*"

7) "[namespace]:queues"
 redisに登録されているキューの名前[namespace]
 コマンド:smembers
 1) "[namespace]"

8) "[namespace]:schedules"
 スケジュールされているジョブ
 コマンド:hvals
 1) "{\"description\":\"ジョブ説明\",\"queue\":\"[namespace]",\"class\":\"クラス名",\"cron\":\"cronスケジュール"}"

9) "[namespace]:[namespace]:resque_scheduler_master_lock"
 マスタースケジューラとして登録されているスケジューラプロセスのサーバ名とプロセスのPID
 コマンド:get
 サーバ名:20289

10) "[namespace]:queue:[キュー名]"
 [キュー名]に登録されているジョブ
 コマンド:
  llen key で、登録数を取得
  lindex key indexで値を取得
 {\"class\":\"クラス名",\"args\":}


ローカルであればresque-web -N namespace でweb画面で確認可能

YosemiteにアップデートしたらGitにSSLのエラーでpushできなくなった件

.git/config書き換えたらなおった。


これを

[http]
sslcainfo = .git/xxxxxxx.pem
sslVerify = false


こうしたらなおった。

[http]
sslVerify = false


いままで同じ設定で通っていたのを考えると、内部の処理フローが変わったのか?


Git?SSL?で修正・変更あったの?なぞい。

YosemiteにしたらPostgreSQL動かなくなった件

YosemiteにアップデートしたらPostgreSQLが起動しなくなりました。



よくある話のようで、ぐぐると、

このフォルダを作成すべし

mkdir /usr/local/var/postgres/pg_tblspc
mkdir /usr/local/var/postgres/pg_twophase
mkdir /usr/local/var/postgres/pg_stat_tmp

という情報が多いです。




ただ、これをそのまま実施しても動きません。というのは、環境によってこのフォルダを作成する場所が異なるからです。

私の場合は、PostgreSQL
/usr/local/Cellar/postgresql/
にインストールされているので、
/usr/local/Cellar/postgresql/9.2.2/data/配下に、上記3フォルダを作成する必要がありました。



まずはwhichとlsで所在を把握してから作成すれば動くのではないかと思われます。

$ which postgres
/usr/local/bin/postgres

$ ls −la /usr/local/bin/postgres
lrwxr-xr-x 1 username role 39 7 29 14:49 /usr/local/bin/postgres -> ../Cellar/postgresql/9.2.2/bin/postgres

Error: Permission denied

nokogiriを更新する前作業として、以下を実行

brew tap homebrew/dupes
brew install libxml2 libxslt libiconv

したところ、

Error: Permission denied - /usr/local/Cellar/libiconv/1.14

とか言われてインストール(アップグレード)できなかった。
単純な話。そのままでした。(そもそもなんでそうなったかは突き詰めてない)

ls -laすると、

drwxr-xr-x 3 [USERNAME] admin 102 6 30 02:38 libevent
drwxr-xr-x 3 root admin 102 7 29 16:08 libiconv
drwxr-xr-x 3 [USERNAME] admin 102 7 29 16:55 libmpc
drwxr-xr-x 3 [USERNAME] admin 102 12 29 2012 libpng
drwxr-xr-x 3 [USERNAME] admin 102 12 29 2012 libtool
drwxr-xr-x 4 [USERNAME] admin 136 10 3 11:32 libxml2
drwxr-xr-x 3 [USERNAME] admin 102 7 29 16:00 libxslt

なんかrootになってるー

ということで、

sudo chown [USERNAME] /usr/local/Cellar/libiconv

したらちゃんと動いてくれました。

MemcachedとRedisの中身を確認する

RailsMemcachedやRedisをsession_storeやcache_storeに利用していて、セットされた値やキーを確認したい場合によく利用するコマンドのメモ。


Memcached
接続 (port:11211)

telnet localhost 11211

サーバ状態確認

stats

キー登録状況確認

stats items

キーと値の確認

stats items の出力
STAT items:X number Y を利用して、下記コマンドを実行

stats cachedump X Y

Redis
接続 (port:6379)

redis-cli

サーバ状態確認

info・・・サーバ状態
client list・・・接続状況
 データをset/getできていればcmd=set/get等
 cliからはcmd=client

キー登録状況確認

dbsize・・・その時点でのキー数を返す
keys [pattern]・・・[pattern]で指定したパターンに一致するキャッシュ値を返す *を利用可

キーを全削除する

flushdb


だいたいこんな感じ。

.idea/dataSources.xmlが邪魔

.idea/dataSources.xmlが邪魔

でした。
毎回commitしてないよとか言われるし。



ちなみにこのファイルは、ViewのTool WindowにあるDatabaseで接続先を表示するために使うファイルのようです。プロジェクトを再ロードした際に、(たぶん)database.ymlなどのDB設定ファイルを読み込んで生成されるため、たとえ消してしまってもまぁあまり困らないファイルです。


.gitignoreに

.idea
.idea/
.idea/dataSources.xml

など追記しても、環境設定でignorefilesに追加しても、RubyMineのcommitDirectoryのリストから消えてくれません。



むーん。




仕方ないので、コマンドラインのgitからあれやこれややって、なんとかリストから消えてくれました。
今日はそのメモ。

  1. 一旦 dataSoureces.xmlをgit commitする。
  2. .gitignoreに「.idea/」を追記してgit commitする。
  3. dataSoureces.xmlをgit rm .idea/dataSources.xmlする。
  4. 実際にファイルシステムから.idea/dataSources.xmlをrmする(mvで.idea/dataSources.xml.bkとかでも大丈夫)
  5. git commitする。


だいたいこんな感じで、リポジトリから消えた状態になりました。
試行錯誤の上でこうしたので、.gitignoreがcommitされない状態になりましたが、そのようなときは、ファイルのコンフリクトなどがあれば修正し、git add .gitignoreして、git commitしてあげてください。


最終的にはgit rebaseしてからpush。色々無かった事に・・・。


プロジェクトを再ロードするとまた生成されるので、手動で消す必要があるかもしれません。そこまでは未確認。