»2019/03/18ISUCON9に向けて社内ISUCONを開催しましたこんにちは、岡嵜です。春の訪れが待ち遠しい今日この頃、今年もISUCONの開催が発表されましたね。開催決定!今年の出題は、さくらインターネットさま&メルカリさまに決定です!FusicではISUCON8に4チームが出場しましたが、残念ながら決勝進出は果たせませんでした。今年も出場する気満々ですので、今年こそ決勝進出すべく、社内ISUCONを開催しました。JAPAN様の社内ISUCON「Y!SUCON」を使わせていただきました。実は昨年も同じ問題で社内ISUCONを開催したことがあるのですが、ISUCON8予選から半年が経過して、メンバーがISUCONの勘所を忘れてしまっている今回はチーム戦ではなく個人戦での開催としたいポータルサイトも用意されているので盛り上がるという点で、Y!SUCONを使わせていただきました。(作成者のみなさま、良い問題をありがとうございました)環境構築EC2インスタンス立ち上げ人数分のサーバとポータルサイト(兼ベンチマーカ)サーバをAWS上に構築します。MarketplaceからCentOS7のAMIを探して利用しました。https://aws.amazon.com/marketplace/pp/B00O7WM7QW?ref=cns_1clkPro最終的にはこのようなEC2インスタンスを起動しました。16GBちなみにポータル(兼ベンチマーカ)サーバも同じスペックとしました。支障はありませんでしたが安心材料としてもう少しスペックを上げても良かったかもな、と思っています。chefを流すインスタンスにSSHログインして、こちらの手順を参考にchefを流します。isuconinstall-phpの時間が20分程度かかるので粘り強く待ちます。弊社はPHPerが多く、SKIPする訳にもいかないので。installでエラーが起こりました。1)これはインストールされたrubyのバージョンが古いことが原因です。ruby-installを利用して2.3.1をインストールした上で、元々インストールされている古いrubyを無効化します。isuconsudoでも新しいrubyが使えるよう、visudoにてパスを設定します。/usr/local/bin/:/sbin:/bin:/usr/sbin:/usr/binポータルサイトの場合は以下の通り、development.jsonを編集した上でchefを流します。benchmarker社内ISUCONやってみてどうだったか?本番のISUCONとは違い個人戦だったこともあり、序盤は各自使用するツールの準備や、環境のバックアップに苦戦していた様子でした。3人いるとアプリ担当、インフラ担当といった分担をするので、自分の担当でない作業はほとんど覚えていないものです。いった点でも今回個人戦で開催したのは、各担当が何をやっているのか把握するという意味で良かったなと思います。スコアの推移スコアとしては最初の壁を突破して、何人かが6000〜7000点で競い合う展開でした。全員8000点の壁を超えることができず競技終了しました。ちなみに青線が私のスコアです。(一応、1位だったのでちょっとうれしい)振り返り競技終了後、各自どのようなチューニングをしたか意見交換をしました。その中で「時刻でソートしているカラムをidでソートしたら効果があった」という意見がありました。昨年この問題に挑戦しているときは気づいていたのに、今年は気づかなかった、、、ということで、自分のアプリにこの修正を反映したところあっさり8000点の壁を超えて、ケタが変わりました。まとめ久々に社内ISUCONを開催しましたが、上手くいった取り組みとそうでない取り組みがよくわかりました。なにより、結果が数字として見えるのでモチベーションが上がりました。昨年も、予選まで月1を目安に社内ISUCONを開催したので今年も活動を継続し、予選突破を目指します。今回のY!ISUCONでのチューニング内容は別記事でまとめたいと思います。Webエンジニアです。mockmockの開発・運用を担当しており、組込みエンジニア時代の経験を活かしてデバイスをプログラミングしたり、簡易的なIoTシステムを作ったりしています。主な開発言語はRuby、時々Go。Hiring!Fusicでは一緒に働く仲間を募集しています。詳しくは以下のページをご参照ください。Viewer」がとても便利(2020/02/07)【PHPerKaigi2020】PHPerトークンを探せ!(Fusic)(2020/02/05)Fusicプログラミングコンテストを開催しました!(2020/02/03)。