ISUCONへの道~アプリケーション実行編~

とりあえずvagrantでの環境構築はできたので、実際にアプリケーションを動かして行きたいと思います。

今回はphpで実装を行いたいので、phpで動かすまでをまとめられればと思います。

まずつまづいたのがisuconユーザのパスワード。

わからなかったので、たどり着いたのが、下のページ。
muttan1203.hatenablog.com

一旦ubuntuユーザでログインして、isuconのパスワードを変えてあげれば良い。

$ vagrant ssh image
$ whoami
ubuntu

$ sudo passwd isucon
Enter new UNIX password:<パスワード>
Retype new UNIX password:<パスワード>
passwd: password updated successfully

これでパスワード変更完了。

次に、nginx.confを置き換えます。

// バックアップを取り
$ sudo  cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
// php用のconfに置き換えます
$ sudo  cp /etc/nginx/nginx.php.conf /etc/nginx/nginx.conf

// systemctlのリストを確認すると、どうやらperlのアプリケーションが動いているらしい
$ systemctl list-units --type=service | grep isucon
  isucon6-bench-worker.service       loaded active running isucon6 bench worker
  isuda.perl.service                 loaded active running isucon6 qualifier main application in perl
  isupam.service                     loaded active running isupam is an isucon6 qualifier sub application
  isutar.perl.service                loaded active running isucon6 qualifier sub application in perl
// perlを停止
$ systemctl stop isutar.perl.service
$ systemctl stop isuda.perl.service
// phpを起動
$ systemctl start isutar.php.service
$ systemctl start isuda.php.service

// nginx再起動
$ systemctl restart nginx.service

// ベンチ実行
$ ./isucon6q-bench -target http://127.0.0.1
2017/09/28 00:30:53 start pre-checking
2017/09/28 00:30:58 pre-check finished and start main benchmarking
2017/09/28 00:31:53 benchmarking finished
{"pass":true,"score":2575,"success":1758,"fail":8,"messages":["リクエストがタイムアウトしました (POST /keyword)","リクエストがタイムアウトしました (POST /login)","リクエストがタイムアウトしました (POST /stars)"]}

一旦ベンチマークが動くところまで行きました。

ちなみにアプリケーションが動作しているIPの確認はifconfigで行いました。

$ ifconfig
enp0s3    Link encap:Ethernet  HWaddr 02:a4:a0:f1:db:6e
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a4:a0ff:fef1:db6e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:412335 errors:0 dropped:0 overruns:0 frame:0
          TX packets:123613 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:570656970 (570.6 MB)  TX bytes:8374510 (8.3 MB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:a5:5a:54
          inet addr:172.28.128.4  Bcast:172.28.128.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fea5:5a54/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:87 errors:0 dropped:0 overruns:0 frame:0
          TX packets:54 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:33304 (33.3 KB)  TX bytes:10458 (10.4 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:3480485 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3480485 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:58428255407 (58.4 GB)  TX bytes:58428255407 (58.4 GB)

これの172.28.128.4にアクセスすると、下記のようなページが確認できました。
f:id:kazuki229_dev:20170928004756p:plain
wiki的なやつっぽい。

次回はプロファイリングツールの導入を行なってみたいと思います。