開発^3スマートフォン用の表示で見る開発^3Web開発、宇宙開発、ゲーム開発の3種類についてつらつらとこの広告は、90日以上更新していないブログに表示しています。2018-09-19ISUCON8に1人で参加してきましたISUCON7は3人チームで参加しましたが、今回は1人参加も可能ということで、ぼっち参加してきました。結果は最高スコア32,596、最終スコア26,873で予選落ちではあるものの、去年の反省を活かした動きである程度のスコアが出せたのは良かったです。手が付けられていない箇所が多すぎて、不完全燃焼感も。後日の検証でLBだけ有効にしたら79,356でましたが、不安定だし、たらればですね。事前に決めていたこと1人参加、かつアプリ寄りの人間のため、迷ってる暇はなさそう。インフラ側の変更は最低限にして、アプリの改修を優先しよう。netdataは今回も使いたいな。前回の教訓を元にネットワークの帯域には気を付けよう。1人だと自由に本番環境を使えるから、手元環境で動作させる必要は無いよね。環境を確認した瞬間「出題DeNAじゃん!!」と叫んでしまったのですが......十分考えられる選択だったよね。nginxに置き換えた人も多かったようですが、設定をみたら割と読みやすかったのと、事前方針を思い出してh2oのまま行くことにしました。(Evernoteからnginxインストール/設定手順を取り出してダウンロードまでは掛けたんですが)チューニングの手順としてはpt-query-digestで重い部分を洗い出して修正していくという基本的なもの。一通りコードを読んでget_events/get_eventが重いことは明らかだったんですが、呼んでいる箇所が多すぎて挙動を変えづらいのが難点でしたね。結局、cancelの扱いがクエリを複雑にしているので、現在の予約状況を示すテーブルを新しく切って対応しました。reservation_id)非正規化の極みとばかりに、どんどん必要になったカラムを増やしていきましたが、最終的にはcurrent_reservations自身がボトルネックになってしまっていたのがちょっと残念かな。(対応した順番としてはこっちが先ですが)残席数管理はredisにしました。残席自体もredisのsetで管理しようと考えたんですが、何故か残席のsetじゃなくて、予約席のsetを作ろうと考えてしまい、そうするとreserved_atをどこに持とう?とか考えて、結局RDBにしてしまいました。atomicなpop処理ができれば、redisだけでロックの代替ができたのかな?後は細かいところをあれこれと弄っていました。rand()h2oのLBが/etc/hostsでできることを知らなかった/etc/hostsに2レコード書いてping飛ばすところまではやったけど、ダメだったのであきらめた。h2o本体で試すべきだった。ISUCON7予選のトラウマから50Mbpsのグローバル帯域を気にしすぎた課題・環境についてポータルがすごく便利。ベンチマークも全く待ち時間が無く、とても快適でした。課題としては面白かったものの、lockが主題になるとスコアが安定しないのが難点か。修正が役に立ったのかどうかがもひとつ判断できず、ツライ時間が続いたりしました。サーバについては、終了後にベンチ環境まで含めて1週間公開してくれるというのがすごくありがたいです。時間切れで試せなかった場所とか、ロックの関連とかいろいろ見てみたいと思います。GMOインターネット株式会社さまと、このはちゃんには足を向けて眠れませんね!1人参加のメリット・デメリットさて、せっかくの1人参加ということで、1人参加のメリットとデメリットも書いておこうと思います。ISUCON9で1人枠が用意されるかはわかりませんが、参加を考えている人は参考にしてください。"Trinity"に参加してみた。Wikipediaを使ったちょっとした遊び。スコアシステムについてISUCON8に1人で参加してきました月別アーカイブはてなブログをはじめよう!sheileさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。