MYSQLのインストール
オフィシャルのサイトにしたがって、インストールしました。
初期設定
# sudo /usr/bin/mysql_secure_installation
このコマンドを実行すると、対話式に色々と聞かれます。
- Current Root Passwordを入力してください。
- A.何も入力せず、Enterを押してください。(デフォルトでrootのパスワードはないから)
- If the above step worked correctly you should be prompted with a question asking you if you would like to set your root password. Please press Y and press Enter.
- A.Yを押してmysql用のrootのパスワードを設定してください。
- You will be prompted to remove the MySQL anonymous users. For security reasons we want to do this.
- A.セキュリティ的によくないので、Yを入力してEnterを押してください
- Delete test Databaseを消しますか
- A.セキュリティ的によくないので、Yを入力してEnterを押してください
参考サイト
・オフィシャルwiki(mysqlインストール編)
http://cloudservers.rackspacecloud.com/index.php/CentOS_-_MySQL_Installation
php高速化 apcのインストール
APC(Alternative PHP Cache)は、PHPの中間コードのキャッシュや最適化を行う拡張モジュールです。
つまり、phpが高速化されるということです。どんぐらい速くなるか計測したいけど、入れて問題が発生することはないらしい(影響がでない)ですので、phpインストール後にすぐに入れます。
インストールコマンド
エラー②
1. Perl is not installed;
2. Apache was not compiled with DSO support (--enable-module=so);
3. 'apxs' is not in your path. Try to use --with-apxs=/path/to/apxs
The output of /var/tmp/pear-build-root/APC-3.0.19/y follows
/tmp/tmpaw98Nt/APC-3.0.19/configure: line 3232: /var/tmp/pear-build-root/APC-3.0.19/y: No such file or directory
configure: error: Aborting
ERROR: `/tmp/tmpaw98Nt/APC-3.0.19/configure --with-apxs=y' failed
エラーでまくりですよ(涙)
対処方法
方法を間違えていました↓
すいません。。
正解
downloading APC-3.0.19.tgz …
Starting to download APC-3.0.19.tgz (115,735 bytes)
…………………done: 115,735 bytes
47 source files, building
running: phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
Use apxs to set compile flags (if using APC with Apache)? [yes] : ← 空Enter
building in /var/tmp/pear-build-kentan/APC-3.0.19
running: /tmp/tmpHKQPfO/APC-3.0.19/configure –with-apxs
apcインストール途中で質問を聞かれるが、いつものノリでYを選択してしまったのが、ハマった原因でした。
空白Enterでうまくいきます。
インストール後の設定
インストールが完了したときに、このように言われるので書きくわえましょう。
しかし、php.iniの他のextensionがないので不思議に思い、調査してみると間違っていました。
CentOSの場合は/etc/php.dにiniファイルを追加すれば読み込むようPHPがコンパイルされているらしいです。
知りませんでした。
ですので、下記のように書きます。
# vi /etc/php.d/apc.ini
extension=apc.so
apc.ttl = 7200
apc.user_ttl = 7200
時間の設定は、下記を参考にしてください。
http://www.php.net/manual/ja/apc.configuration.php
apache再起動でOK
# /etc/init.d/httpd restart
確認
[root@testMan ~]# php -r 'phpinfo();'|grep apc
additional .ini files parsed => /etc/php.d/apc.ini,
OK入りましたね。
参考サイト
・APC(Alternative PHP Cache)をCentOS5にインストール[戯言(表)]★スペシャルサンクスサイト
http://www.kentan.jp/kentan/blog/?p=233
・APC を pecl で CentOS5 にさくっとインストール(芸人社長)
http://blog.oowarai.com/?p=292
・APC インストール時のエラー(php MySQL apache などの設定メモ)
http://web-gijyutu.com/php/apc-error.html
xoopsを導入(CMS)
自分が、phpを学び始めたきっかけになったXOOPSを入れてみます。
手順
①xoopsインストールします。
③http.confの設定を変更
バーチャルホストを設定
NameVirtualHost *:80
#####################################################
##
## rackspace (xooops)
##
#####################################################
DocumentRoot /var/www/html/rackspace/xoops/html
ServerName xoops.rackspace-jp.com
ErrorLog logs/xoops.rackspace-jp.com-error_log
CustomLog logs/xoops.rackspace-jp.com-access_log combined
Options None
AllowOverride None
Order deny,allow
Deny from all
Options FollowSymLinks
AllowOverride None
Allow from all
Order deny,allow
Deny from all
(補足)サブドメインをDNSに登録する
name | content | domain name | TTL | TYPE |
---|---|---|---|---|
xoops.rackspace-jp.com | rackspace-jp.com | rackspace-jp.com | 300 | CNAME |
④新規データベース(rackspace用)を作成する
その前に、rackspaceデーターベースを扱うユーザを作っておく。
パスワード生成ツール
http://nurucom-archives.hp.infoseek.co.jp/digital/makePassword.html
自分は、コマンドが苦手なので、navicatを使ってデータベース作成とユーザ追加を行いました。
- navicatのつなぎ方(トンネリング)
teratermで、cloud serverにつないだ状態で、上部メニューの設定-SSHポート転送を選択。
追加を押して、下記のように設定する
ローカルポート | 3306 |
リモート側のホスト | 空白 |
ポート | 3306 |
これで、navicatと接続できます。
⑤xoopsのインストール
※⑥の文字化け対策をした方が絶対いいです。再度インストールする必要がでてきます。
xoopsのインストール方法は、色々なサイトに載っているのでここでは説明しません。
普通に行えば、何も調べずともできます。
★アパッチの文字化け対策
httpd.confに
AddDefaultCharset EUC-JPを追加しました。
DocumentRoot /var/www/html/rackspace/xoops/html
ServerName xoops.rackspace-jp.com
ErrorLog logs/xoops.rackspace-jp.com-error_log
CustomLog logs/xoops.rackspace-jp.com-access_log combined
Options None
AllowOverride None
Order deny,allow
Deny from all
Options FollowSymLinks
AllowOverride None
AddDefaultCharset EUC-JP
Allow from all
Order deny,allow
Deny from all
★データベース(mysql)の文字化け対策
また、データベースで扱う文字コードも変更します。
/etc/my.conf
[client]
default-character-set=utf8[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
xoopsをもう一度、再度インストールしたら文字化けが直りました。
参考サイト
MySQL 文字化けを防ぐ、文字コードの確認と設定(渋谷生活)
http://www.avant-tokyo.com/linux/mysql_character_set.html
xoopsでのResizeの効果測定
一番気になっていたことは、サーバのResizeしていってどのぐらいの負荷をさばけるようになるかということです。
ワクワクしてきますね♪
負荷調査ツール
apache benchを使います。
※自分が所有しているサイト以外には絶対にやらないでください。
訴えられますよ。
テスト内容
アクセス元 | 自分のPC(windowsXP) |
ターゲットサービス | xoops(LAMP構成) |
ターゲットURL | http://rackspace-jp.com/userinfo.php?uid=1 |
同時接続する数 | 100コネクション |
リクエスト回数 | 100回 |
1GBまでしか、この条件でテストしませんでした。
ごめんなさい。
テスト実施
■512MBプラン
Requests per second: 5.97 [#/sec] (mean)
- 備考
リクエスト数:1000回でも、普通にさばいている
どんなに負荷をかけてもサーバは落ちなくなった。apacheの設定の問題だとは思いますが。
httpd.conf
項目 | 変更前 | 変更後 | |
---|---|---|---|
MaxClient | 500 | 20000 | |
KeepAliveTimeout | 15 | 60 |
こうすれば、サーバのリソースを使いきれるはずです。
しかし、これでも落ちなかった。
■1024MBプラン
Requests per second: 5.95 [#/sec] (mean)
- 備考
512MBプランと変わりがないです。
このサーバのリソースを限界がわかりません。
原因は、自分のPC上からアクセスしているので、xamppのapache bentchを使っていることでした。
どこかで制限がかかっているようです。
1000コネクションで、1000リクエストだとサーバは落ちました。
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
apr_socket_recv: Connection reset by peer (104)
Total of 314 requests completed
300リクエストを超えたぐらいで、悲鳴をあげているようです。
そのあと、処理を止めたのでサーバは3分ぐらいしたら落ち着きました。
よし、次行ってみよう!
■2GBプラン
1000コネクションで、1000リクエストだとサーバは落ちました。
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
apr_socket_recv: Connection reset by peer (104)
Total of 702 requests completed
702リクエストまで、さばけました。先ほどは、300までだったので2倍以上にアップしましたね。
■4GBプラン
apr_socket_recv: Connection reset by peer (104)
このようなエラーが発生してしまって、最後までいきませんでした。
理由はこの説明がぴったり
また、1台のコンピュータが発生させられる同時接続数についても注意したい。例えば、高性能なUNIXサーバに対して測定する場合、相当な数の同時接続を発生させる必要がある。しかし、普通のPCサーバで発生させられる同時接続数には、おのずと限界がある。従って、複数台のコンピュータにabを入れて測定しなければならない。たとえ、1台のコンピュータでこなせる数だとしても、複数台での測定も試してみることを勧める。
つまり、測定する側の限界ということです。
ですので、下記のようなオプションに変更しました。
# /usr/bin/ab -c 1000 -n 1000 -t 10 http://localhost/
測定する時間を、10秒間だけにしました。
すると、、
Requests per second: 35.50 [#/sec] (mean)
驚異的にさばいている。
■8GBプラン
Requests per second: 82.49 [#/sec] (mean)
■16GBプラン(最強)
一応しらべときます。
Requests per second: 75.67 [#/sec] (mean)
不思議と落ちました。
考察
スペックをあげていけば(resize)、かなりのアクセスでも捌けることがわかりました。
rackspaceを使えば、ちょっと作ったサービスに急に人気が出たさえも、ボタン一つでサーバのスペックをあげて対応ができ、かつそれがかなりのレベルのサーバのスペックにまでなる。
これは、素人革命ですね。
ps.
xoopsは、かなり負荷がかかりますねw
resizeについて
今のサーバに容量が少ないからだろうが、カップラーメンが出来上がるぐらいの時間でresizeが完了しました。
また、resizeの初めから中番ぐらいまでは、ホームページは表示されています。
つまり、riseize前のサーバは生きています。teratermも繋がったままです。
しかし、resizeの最後の方ではサーバにアクセスできなくなります。
新しくできたサーバにIPアドレスを入れ替えたりしているのではないでしょうか。
おまけ
①
フレームワークとか、xoopsのようなCMSなど、DBをカラムものは大量のアクセスが来たらどんなにサーバのスペックを上げようが限度があると思います。
これを見てください。
Requests per second: 5000.00 [#/sec] (mean)
静的ファイルだと、こんなにも捌けます(最上位プラン)。
結局は、負荷対策はキャッシュを使う。これしかありません。
②
最初に(256MBのプラン)、リクエスト回数1000で、コネクション100でアタックをかけたら完全にサーバが固まりました。
load average: 102.43, 77.03, 36.52
本当に怖いですね。実際に動いているサービスにこれして、サーバ落としたら賠償請求されますよ。。
こういう攻撃に対応していないサイトが悪いと言いたいですが。。
謝罪
ここまで負荷をかけたテストをしたことがなかったので、最初に想定していたテストがまったく通用しませんでした。
負荷のかかるサーバをテストするには、もっと技術力が必要です。
勉強しなおそうと思います。
参考サイト
・Apacheパフォーマンス・チューニングのポイント(@IT)
http://www.atmarkit.co.jp/flinux/rensai/apache15/apache15b.html
通信速度 rackspace cloud
クラウドサービスは、サーバが海外ために通信速度が遅いといわれています。実際はどうなのでしょうか。
速度の目安
通信種類 | 速度 |
---|---|
LAN内 | 10ms以下 |
光・高速ADSL | 数10ms以下 |
低速通信 | 300ms以下 |
測定結果
サイト名 | 速度 |
---|---|
rackspase | 160ms |
ec2 | 200ms |
yahoo | 17ms |
3ms |
考察
普通に触っている分には遅く感じませんが、数字で見るとかなり遅いことがわかります。
ただ、このようにモバツイが言及しています。
webサービスにそこまで速度は求められていない。
0.1秒なら、、
どうなんでしょうね。
参考サイト
・お便利サーバ.com
http://www.obenri.com/_command/ping01.html
・そろそろモバツイがEC2に移転した話でも書くとするか
http://www.milkstand.net/fsgarage/archives/001604.html