2014年11月22日土曜日

【VPS】さくらインターネットのVPSをUnixBenchしてみた

円安だから海外VPSから国内VPSへ引っ越すことにした。
でも、国内VPSは相変わらず微妙なスペック。

とりあえずVPSサーバのベンチマークをとることにした。
試したのは「さくらインターネット」 。
スペックは以下の通り。

さくらVPS: SSDプラン
メモリ: 4G
ディスク容量: 100GB
リージョン: 石狩

さくらインターネットはクレジット払いにすると二週間お試しできるのがメリット。
VPSは同居人の影響をもろ受けるのでサーバ環境を確認後に本契約に移れるのは利用者には嬉しい。
残念だったのは複数台を仮契約してローカルネットワークも試せなかったこと。
VPSのメニューにそれらしいのがないから、本契約じゃないと使えないみたいだった。
本当に残念。
本契約の前に試せると嬉しいんだけどね。

さくらインターネットは最近2chを攻撃している と噂されている偽2ch運営のたらこと関わっているんじゃないかと言われていて、利用は二の足を踏んでいた。
じゃあ、他にあるのかというと無いんだよね。
Linodeとか東京にDCを持つ海外勢はドルでの支払いだし、選択肢からは外れるし。
本当に日本勢は頑張って欲しい。

愚痴はこれくらいにしてベンチマークの結果を書いとく。
仮契約したのはローカルネットワークを試そうと思っていたので2台。

1台目
------------------------------------------------------------------------
Benchmark Run: 土 11月 22 2014 15:05:24 - 15:33:43
3 CPUs in system; running 3 parallel copies of tests

Dhrystone 2 using register variables       70587043.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     8196.6 MWIPS (9.9 s, 7 samples)
Execl Throughput                              10005.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        688425.7 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          155036.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1332670.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                             4625643.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 603899.1 lps   (10.0 s, 7 samples)
Process Creation                              26557.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  10386.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1349.7 lpm   (60.1 s, 2 samples)
System Call Overhead                        3959540.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   70587043.2   6048.6
Double-Precision Whetstone                       55.0       8196.6   1490.3
Execl Throughput                                 43.0      10005.9   2327.0
File Copy 1024 bufsize 2000 maxblocks          3960.0     688425.7   1738.4
File Copy 256 bufsize 500 maxblocks            1655.0     155036.0    936.8
File Copy 4096 bufsize 8000 maxblocks          5800.0    1332670.9   2297.7
Pipe Throughput                               12440.0    4625643.3   3718.4
Pipe-based Context Switching                   4000.0     603899.1   1509.7
Process Creation                                126.0      26557.5   2107.7
Shell Scripts (1 concurrent)                     42.4      10386.9   2449.7
Shell Scripts (8 concurrent)                      6.0       1349.7   2249.6
System Call Overhead                          15000.0    3959540.5   2639.7
                                                                   ========
System Benchmarks Index Score                                        2209.1

2台目
------------------------------------------------------------------------
Benchmark Run: 土 11月 22 2014 15:20:50 - 15:49:09
3 CPUs in system; running 3 parallel copies of tests

Dhrystone 2 using register variables       65719344.7 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     7974.8 MWIPS (9.9 s, 7 samples)
Execl Throughput                               9435.9 lps   (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        599021.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks          146167.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks       1369903.5 KBps  (30.0 s, 2 samples)
Pipe Throughput                             4552963.0 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                 650405.2 lps   (10.0 s, 7 samples)
Process Creation                              25803.4 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  10891.7 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1428.3 lpm   (60.1 s, 2 samples)
System Call Overhead                        5486500.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   65719344.7   5631.5
Double-Precision Whetstone                       55.0       7974.8   1450.0
Execl Throughput                                 43.0       9435.9   2194.4
File Copy 1024 bufsize 2000 maxblocks          3960.0     599021.9   1512.7
File Copy 256 bufsize 500 maxblocks            1655.0     146167.0    883.2
File Copy 4096 bufsize 8000 maxblocks          5800.0    1369903.5   2361.9
Pipe Throughput                               12440.0    4552963.0   3659.9
Pipe-based Context Switching                   4000.0     650405.2   1626.0
Process Creation                                126.0      25803.4   2047.9
Shell Scripts (1 concurrent)                     42.4      10891.7   2568.8
Shell Scripts (8 concurrent)                      6.0       1428.3   2380.5
System Call Overhead                          15000.0    5486500.7   3657.7
                                                                   ========
System Benchmarks Index Score                                        2233.5

2014年2月16日日曜日

【vsfrpd】FTPが接続できない

お名前.comのVPS(以降、FTPサーバ)にvsftpdをインストールして設定した。
早速、FTPクライアントで接続すると以下のエラーが返ってきてFTPサーバに接続できない。

エラー -203: miscellaneous error occurred while trying to login to the host

設定を確認するけど間違っているところはない。おかげで1時間程はまってしました。
ファイアウォールやいろいろチェックしていくと「SELINUX」が有効になっていたことが原因だった。

「SELINUX」が有効であるか以下のコマンドを実行して確認する。

#/usr/sbin/getenforce

コマンドを実行して以下のメッセージが表示すれば「SELINUX」が有効だということになる。

Enforcing

「SELINUX」を無効にする方法は即時に反映する方法と設定に保存してサーバ再起動時に反映する方法がある。
前者の場合、以下のコマンドを実行する。

#setenforce 0

「SELINUX」が無効になっているか以下のコマンドを実行して確認する。

#/usr/sbin/getenforce

コマンドの実行して以下のメッセージが表示すれば「SELINUX」が無効だということになる。

Permissive

確認のためにFTPクライアントでFTPサーバに接続すると成功した。ただ、この方法だとvsftpdをインストールしているFTPサーバを再起動すると「SELINUX」が有効なった状態になってしまう。
そこで後者の方法も行なっておく。
以下のSELINUXの設定ファイルを編集する。

#vi /etc/selinux/config

設定ファイルの以下の箇所を

SELINUX=enforcing

以下のように修正する。

SELINUX=disabled

確認のために再起動してFTPクライアントでFTPサーバに接続すると成功した。

2014年1月31日金曜日

【MySQL】GEOMETRY型の列にインデックスを張る

MySQLに接続して以下のコマンドを実行するが

mysql> ALTER TABLE location ADD INDEX (lat_lon);

以下のエラーが返ってきた。

ERROR 1170 (42000): BLOB/TEXT column 'lat_lon' used in key specification without a key length

MySQLのドキュメントを読むとGEOMETRY型(BLOB型)の列にインデックスを張るには「インデックス」でなく「スペシャルインデックス」にする必要があると分かった。また、「スペシャルインデックス」が対応しているテーブルエンジンは「MyISAM」のみなので注意する。 インデックスを張ろうとしているテーブルは「InnoDB」だったので「MyISAM」に変更した。

以下のコマンドを実行すると

ALTER TABLE location ADD SPATIAL INDEX (lat_lon);

今度は問題なくGEOMETRY型の列にインデックスを張ることができた。 「EXPLAIN SELECT」を使用して先ほど張ったインデックスが効いているか確認して問題なければいい。


ちなみに「InnoDB」で「スペシャルインデックス」を張るコマンドを実行すると以下のエラーが返ってきた。

ERROR 1464 : The used table type doesn't support SPATIAL indexes

ドキュメント通り「InnoDB」には対応していないようだ。

【nginx】CentOS6環境でyumを使用して最新版のnginxをインストールする

yumにnginxのリポジトリを登録する。このリポジトリのURLはnginx本家のサイトからチェックできる。

sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
 
このコマンドを実行すると
 
/etc/yum.repos.d/nginx.repo
 
このファイルが保存される。このファイルを開くと  

# nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
 
これでyumで最新版のnginxをインストールする準備完了。
 
sudo yum install -y nginx
 
コマンドを実行してnginxをインストールする。
 
sudo service nginx start
 
コマンドを実行してnginxを実行する。
ブラウザでアクセスして
 
Welcome to nginx!
 
が表示すればnginxのインストール作業は終わり。  

2014年1月25日土曜日

【Yii】Yiiで複数言語化対応

Yii frameworkで複数言語に対応してみる。
以下のファイルを修正する。
[ 配置したYii frameworkのディレクトリの絶対パス ]/[ 作成したプロジェクト ]/protected/config/main.php

return array(
    // ココにソースを記述
    // i18n
    'language'=>'ja_jp',
    'sourceLanguage'=>'en_us',
);

viewファイルの中に以下のコード書いて修正する。

<p><?php echo Yii::t('app','access'); ?></p>

Yii:t()メソッド内の'app', 'access'は「app」がカテゴリで「access」が複数言語化対応する文字列で翻訳する文字列。
修正したviewを表示する。


書いたコードの部分にはaccessの文字列が表示する。accessの部分を日本語化するために翻訳ファイルを作成する。
以下のディレクトリにja_jpディレクトリを作成する。

[ 配置したYii frameworkのディレクトリの絶対パス ]/[ 作成したプロジェクト ]/protected/messages/

ja_jpディレクトリ下にapp.phpファイルを作成する。このファイル名はカテゴリと揃える。次にこのファイルを開いて以下のコードを書いて保存する。

<?php
return array(
 'access'=>'あいうえお',
);
?>

再びviewを表示する。


「access」の部分が「あいうえお」に置き換わっている。
Yiiの他言語対応は凄く簡単だな(感動)。

【Yii】Yii Frameworkはじめました

Yii2.0を使おうかと思いましたがアルファ版なので1.1版を使うことにした。
まずYii1.1をYiiサイトからダウンロードする。
ダウンロード先ここ
Yiiサイトを開いたら以下の赤枠の中のボタンをクリックして、Yii Frameworkのファイルをダウンロードする。


ダウンロードしたファイルは解凍して適当な場所に配置する。
私がダウンロードしたファイルはtar.gz形式解凍方法はここを見る。

これで初期設定はおわり。解凍したディレクトリの中にdemosディレクトリがある。この中にサンプルが入っているので試しに動かしてみる。
データベースを使わなくても動いたので驚いた。

Yii frameworkでWEBシステムを作る時はプロジェクトを作成する必要がある。
作成方法は以下のコマンド。

cd [ 配置したYii frameworkのディレクトリの絶対パス ]

framework/yiic webapp test

これでサクッと作成できる。このyiicコマンドだけどファイルの権限に実行権限ないと動かないことがある。私の環境はMAC OS X Marvericks。以下のファイルの権限の変更を行なった。

  • framework/yiic
  • framework/yiic.php