Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

ISUCON11予選参加でubuntu、nginx、mysqlの知識がほぼ0の人がインフラ担当をやろうとした話

ISUCON11に参加してきました

会社の同僚2人とISUCON11に参加したので雑記
普段全くインフラを触らず、ubuntu、nginx、mysqlの知識もないけどインフラやるぞ、となった人がどういう所でつまづくのかが書いてあるかも

当日まで

  • ISUCON9予選をまっさらなubuntuでbench叩ける状態にした
  • appとdbのサーバーを分けられるようにした
  • 計測に必要そうなツールを調べておいた
    • nginx.confとmysql.confの辺りは少し見ておいた

当日の自分の動き方

  • みんなで予選当日マニュアルアプリケーションマニュアルの読み合わせをしつつAWSにインスタンスを立てる
  • trelloにあらかじめ作っておいたTODOリストを確認し誰がどれをやるをざっくり決める
  • インスタンスにgitを入れてpush
  • mysqlでスロークエリを吐き出してメモ
  • シンボリックリンクを /etc/mysql/mariadb.conf.d/50-server.cnf につけてgitで見れるようにした
  • mysql.confの bind-address0.0.0.0 にしてどこからでも接続できるようにした(コメントアウトするだけでいいらしい)
  • appとdbのインスタンスに分ける
    • main.goとsql/init.sh、env.shのMYSQL_HOSTをinstanceのpublic IPを指定して嵌る
    • SSH接続のPORT転送を使ってmysqlの接続権限の確認をしたり、↑で設定したものが反映されているか確認するが原因分からず
    • AWSのコンソールをぼーっと眺めていたら、ふとセキュリティ的にpublic IPではなくprivate IPじゃないとダメなのではと気付き修正して無事接続できた
  • ベンチが「ユーザーは増えませんでした」「評判が悪化してユーザーが増えなくなりました」のような悲しいコメントを吐いていたので対応せねばという気持ちになり調査したが原因分からず
  • ベンチ叩きながらhtopでインスタンスの状態を見てappかdbのインスタンスどちらを増やすか悩んでいたがどちらもCPU使用率が同じぐらいだったのでappを2台にしようとnginxの設定をいじる
    • nginxの設定をガチャガチャ弄っていたが全然反映されず心が折れる(後で気づくがhttp(80)の設定を弄っていた)
    • nginx.confが他にもあって優先順位的に上書きされているのではと思い調べていくとhttps(443)の設定がされているファイルを発見して編集 (17:50くらい)
    • locationとserverとupstreamの書く位置が間違っておりハマった
    • 最初設定してインスタンス再起動、ベンチ叩くで動作確認していたがsudo nginx -tでvalidationチェックできることがわかり↑のミスに気付く
    • ISUCONの終了時間が45分遅くなりギリギリapp×2とdb×1の編成で23696が出る
  • 使用していないprocessが走らない設定を入れたり、謎processをkill -9 PIDでお掃除
    • うっかりappのbenchから指定していたappのインスタンスのnginx processをkillしてベンチを回し0点を吐き出しメンバー全員が青ざめる
    • sudo lsof -i -P -nで確認して↑の通りnginxを殺したことが発覚、nginxを起動し無事競技中の最高スコア27892を出し終了 Screen Shot 2021-08-22 at 3.39.50.png

残り時間後5分ちょいで0点を出すと頭が真っ白になりますね…

練習と本番の違いで苦しんだこと

  • AWSのサーバのセキュリティグループの設定をガバガバで実装していた為、private IP使わないといけないことに気づくのに時間溶けた
  • 起動時にgoを自動で走らせており、どこにログが吐かれているのか分からずデバッグができなかった
    • killして手動で実行しようとしようとしたがENVが読み込めず

感想

去年はイスを温める人になっていたので今年は貢献できて嬉しい。
ISUCONは青春ですね。夏を感じました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?