投稿

10月, 2014の投稿を表示しています

複数サーバーでセッション管理するためにRedisからMariaDB Cluster(MySQL)に変更

イメージ
前の記事で複数サーバー構成にした。nginxの設定では「ip_hash」を使いIPアドレスをキーにした負荷分散にしたけど、モバイルアプリからのアクセスは頻繁にセッションが切れる現象に遭遇。環境: CentOS 6.6 x64, Node.js v0.11.14, MariaDB 10.0.14今までアプリのセッションは各サーバーごとにRedisで管理していた。セッション管理するサーバーを用意して各アプリサーバーが参照するようにすれば出来る。Redisでセッションを一元管理する場合のポイントbind(/etc/redis.conf)は制限せずにファイヤーウォールで制限する Redis Clusterもあるけど、まだ開発段階みたい。。。と調べたけど、このサービスはMariaDB Galera Clusterでクラスター構築したので、セッション管理もこっちを使うことにした。connect-mysqlを使えば解決。poolも使えるので便利。nlf/connect-mysql | GitHubconnect-mysql-sessionの方が人気みたいだけど、内部でseqelizeというO/Rマッパーを使っている。node-mysqlを使ってほしいので除外。MariaDB ClusterがサポートしているのはInnoDBかXtraDBストレージエンジンだけでMemoryは使えないので注意。< Related Posts >MariaDB Galera Clusterをインストールしてデータベースをクラスター化CentOS6 + nginx + PHP5.4 + MariaDB10 + WordPress + node.jsの環境を構築する手順をまとめRedisをInstallして、Node.js + RedisでSession管理

【Titanium】SQLiteのテーブル一覧を出力

イメージ
Titanium.Databaseを使ってテーブルを作成したあとに、確認のためにデータベースのテーブル一覧を出力したときの覚書。環境: Titanium SDK 3.3.0.GA公式ドキュメントを参考に。Working with a SQLite Database - Appcelerator Platform - Appcelerator DocsPragma statements supported by SQLiteEZ-NET: SQLite でテーブルのカラム構造を取得するSQLで取得するためには「sqlite_master」からSELECTすればいいらしい。データベース名を引数にして、構造をオブジェクトで返す関数を作った。/**
* Get Database Structure
*
* @api public
* @param {String} dbName Database Name
* @return {Object}
*/
function getStructure(dbName) {
    var db, rsTables, rsColumns;
    var sql, tables, tableName;    // Generate SQL
    sql = [];
    sql.push("SELECT name");
    sql.push("FROM sqlite_master");
    sql.push("WHERE type = 'table';");    // Excute
    db = Ti.Database.open(dbName);
    rsTables = db.execute(sql.join(' '));    // Loop in Table ResultSet
    tables = {};
    while (rsTables.isValidRow()) {
        tableName = rsTables.fieldByName('name');
        tables[tableName] = {};        // Get Columns ResultSet
        rsC…

Google Compute Engineにインスタンス作成してSSHでログイン

イメージ
開発用でGoogle Compute Engine上にCentOSインスタンスを作成してTera Termでログインするまでの覚書。環境: f1-micro, CentOS 6.5 x86_64目次Google Developers Consoleでプロジェクト作成 Google Compute Engine上でインスタンス作成 Tera Term(SSH)からrootでログイン 気付いたこと1.Google Developers Consoleでプロジェクト作成Google Developers Consoleにアクセスして「Create Project」する。2.Google Compute Engine上でインスタンス作成作成したプロジェクトを選択して、
Compute → Compute Engine
を選択すると初回はクレジットカードの登録が必要。住所と名前は日本語でも大丈夫だった。有効になると
Compute → Compute Engine → VM instances
から「New instances」を選んでインスタンスを作成する。MACHINE TYPEは料金に関係してくる。詳しくは公式サイトで。Google Compute Engine - クラウド コンピューティングと Infrastructure As A Service ー Google Cloud Platform「EXTERNAL IP」はEphemeral(一時IPアドレス)を選択しておけば追加料金はかからない。作成後は自動で起動される。一覧から選択して「SSH」を選択するとブラウザ版SSHが起動する。これでも十分操作可能。3.Tera Term(SSH)からrootでログインTeraTerm Menuから起動するため。詳しくは公式ドキュメントを参考にしながら。Google Developers Console - Google Compute Engine ー Google Cloud Platformまずは公開鍵と秘密鍵を作成する。この辺は前の記事を参考に。【CentOS】さくらVPSサーバーの初期設定作成した公開鍵を管理画面の「SSH Keys」から登録する。このとき最後にユーザー名を指定する。他のユーザー名を指定すると自動でユーザーが作成される。ssh-rsa AAAAB3…

PHPStormを64bitで動作+メモリ容量を増やして高速化

イメージ
コード補完候補が表示されるときに一瞬止まるのがイラッときたので調査。環境: Windows 8.1 x64, JDK 8u20, PHPStorm 8.0.2やってはみたものの日本語入力すると落ちるのでオススメしない。→ こちらの方が既に報告してくれている様子。Javaのバグらしい。バージョン9で直るらしいのでしばらく先になりそう。Windows 7、Java SE 8u20、NetBeans 8の組み合わせで落ちる - torutkの日記< 2015/03/24 Modified >
PHPStorm 8.0.3 + JDK 8u40で無事動作するのを確認。参考サイトSelecting the JDK version the IDE will run under : JetBrains SupportPhpStormのメモリ使用量を増やして高速化目次使用中のメモリ容量を表示 64bit版JDKをインストール 64bit版PHPStormを起動 最大使用メモリ容量を増やす1.使用中のメモリ容量を表示File → Settings → Appearance → Show memory indicator2.64bit版JDKをインストールHelp → Aboutで確認するとJRE 1.7.0 x86を使っているので最新の64bit版JDK 1.8をインストールすれば速くなるかなと思ってやってみた。JDKを公式サイトからダウンロード。JREでなくJDKと参考サイトに書いてあった。Java SE - Downloads | Oracle Technology Network | Oracle「jdk-8u20-windows-x64.exe」を実行してインストール。念のためマシン再起動。3.64bit版PHPStormを起動PHPStormのインストールディレクトリに移動して64bit版を起動。C:\Program Files (x86)\JetBrains\PhpStorm 8.0.2\bin\PhpStorm64.exeHelp → Aboutでさっきインストールした1.8を使っているか確認。4.最大使用メモリ容量を増やすPhpStorm64.exe.vmoptionsを編集する。エディタ(メモ帳など)を管理者として実行して下記のように変更。変更前-…