2013年1月8日火曜日

VirtualBox仮想環境AndroidをEclipseからデバッグしてみた

Androidアプリ開発に本格的に着手することになるので開発環境を整えます。

AndroidアプリのIDEであるEclipseはGoogleがプラグインとSDKとエミュレータをセットにしたパッケージを配布してるのでそれを実行するだけでできてしまいます。

http://developer.android.com/sdk/index.html

Windowsはこれだけで直ぐにAndroid開発ができちゃうから便利ですね。

 

ただ、エミュレータがどうしても重たい。このバンドルされているエミュレータはARM命令をx86CPUでエミュレートすることによって動いているのですが、

命令セットのエミュレータというのはかなり高コストになります。現在のどんなにハイスペックのPCでもヌルヌル動かすのは難しいでしょう。

 

なんとかならないものかと探していたらx86で動くAndroidビルドがあるそうです。

ということはVirtual Box等の仮想化ソフトで動かせるということ。

x86なので命令セットのエミュレートも必要ありません。

そして何台でも仮想Androidを作成できます。

 

試しにやってみたところ実に簡単に動かす事ができました。

ヌルヌルとまでは行きませんが、少ないリソースでAndroidエミュレータよりかなり高速に動かすことができます。

ただ、APIレベルがあってなくてEclipseからリモートデバッグができないこともあったのでいずれやり方をまとめようと思います。

 

それにしてもEclipse + ADTは画面ゴチャゴチャで見辛い...

フルHDでも狭いから4k2kが欲しくなってきた。

2013年1月7日月曜日

Webサーバチューニング(MySQL+PHP)とりあえず版

チューニングメモ。

パラメータの細かい説明はいろんなサイトにまとめてあるので省略します。

環境としてはOSは問わずPHPでSQLゴリゴリでリクエストあたりレスポンス秒が少ないWebサービスで、

他にクローラツール等のDBサーバも請け負っています。

 

まず、見落としがちですが、

CLOSE_WAITのセッションを早く消します。

主にクローラツールが原因なのですが、TCPコネクションが無駄にkeepaliveされるので許されるギリギリの値まで削ります。

http://network.station.ez-net.jp/server/linux/network/time_wait.asp

が参考になります。

# vi /etc/sysctl.conf

に下記を追加。

net.ipv4.tcp_keepalive_time = 5

net.ipv4.tcp_keepalive_probes = 2

net.ipv4.tcp_keepalive_intvl = 2

net.ipv4.tcp_fin_timeout = 15

 

次にApacheチューニングですが、奥が深すぎるのでおおよその計算を設定して運用後、徐々に調整していきます。

私の環境では以下の様に。結構稼働範囲ギリギリです。

# vi /etc/httpd/conf/httpd.conf

Timeout 15

KeepAlive Off

HostnameLookups Off

TraceEnable Off

<IfModule prefork.c>

ServerLimit 300

StartServers      10

MinSpareServers   50

MaxSpareServers  100

MaxClients      300

MaxRequestsPerChild  4000

MaxMemFree 4096

</IfModule>

server-statusを見ながら細かい調整を重ねます。

 

そしてMySQLの設定。

どのようなリレーションでサブクエリを多用するのかしないのか。同時にいくつアクセスがあるのかなど考えて調整していきます。

私の環境では細かい接続がバンバンくるので下記の様な設定です。

# vi /etc/my.cnf

 

max_connections = 1500

 

#tuning

query_cache_limit       = 32M

query_cache_size        = 256M

 

key_buffer              = 2048M

max_allowed_packet      = 4M

thread_stack            = 192K

 

sort_buffer_size = 4M

read_buffer_size = 4M

read_rnd_buffer_size = 16M

join_buffer_size = 262144

 

wait_timeout = 120

interactive_timeout = 120

 

thread_concurrency = 300

thread_cache_size = 3000

table_cache = 10000

 

 

PHPで真っ白画面

 

また下らないことで少しハマった。

Webサーバの引越時にPHPファイルを移行してMySQLに接続するコードーがありました。

ほぼ同じ構成のサーバの引越しなので特に問題なく進むはずと思ってたのですが、php.iniの設定でエラー表示するようにしてるのに画面が真っ白です。

エラーログファイルにも何も書かれていません。

 

一時間くらいうろうろしてたところふとMySQLへ接続するDAOラッパをコピペで動かしてるのを思い出しました。

見てみると「@」アットマーク。エラー制御演算子がmysql_connectについてました。

エラーが出ないのも納得。エラー制御演算子をつけているのにも納得。

こういうことがあるからコピペする時は最大限の注意を。

 

 

2013年1月2日水曜日

何度目かのブログ開設

GAEのmiclogが死んだので今度はBloggerでブログ開設。

もう何度ブログ作りなおしたかわからないけど懲りずにやります。

IT系忘却ブログです