blog技術のこととか釣りの事とか(書けたらいいなぁ)この広告は、90日以上更新していないブログに表示しています。ラブライブ勝利を知りたい。辛すぎるので「今日は一日ラブライブ三昧」を聴きながら書いてます。今年で3回目の参加のisuconですが、参加者もどんどん増えているみたいです。して参加したのですが、予選突破ならず。スマイルさんほんとすみません。isucon.net一応前回よりは成長できたみたいなのでそこはせめてもの救いです。敗退したので参考にはなりません。一週間前におばちゃんがconohaで練習用インスタンスを立ててくれました。この問題はまずcache-controlをどうするかが鍵だったのでnginxの設定ファイルをいろいろいじってました。送ってこさせようとしたのですがうまく行きませんでした。publicにするのは簡単だったので本戦でもpublicつけとこって思いました。練習は前日までやってましたが圧倒的準備不足でした。直前まで練習していたのでisuconの感覚をもったまま当日に望めたのはよかったです。この判断は良かったと思います。こんな構成でMakefileで全部最新の状態にできるようにしてました。webapp/nginx/systemd/db/Makefile当日やったこと初期状態でベンチマーク今回はpythonでやると決めていたのでアプリケーションをpythonにしてベンチマークを実行しました。デフォルトだと600とかだった気がします。レギュレーション確認やるのは当然なのですが、今回はスコア配分も載っていたので配点の低いところにリソースを割かないように気をつけてました。次どこやろうで悩んだときにこの基準に振り返れたのは良かったと思います。サービス把握e○lusのようなイベントの予約サービスでした。一通り触るのは今思っても大事だと思います。今回はadminの機能もあって売上レポート出力機能があったのですが、配点が低かったのでここはスルーすることにしました。ここまでで30分ぐらいでしょうか。9/17がファンミだったので予習しないとだったんですよね。ボトルネック特定もはや定石となったalpやgo_accessなどを使ったnginxのログ解析。設定ファイルいじるか、と思ったらない。ない?と気づいてそ、そうきたかー!!!ってなってました。最初の判断ポイントで、h2oのまま行くかnginxに載せ替えるかの2択でしたが、h2oは全員ほぼ触れたことがなくドハマリする可能性があったのでまずはnginxに載せ替えることに。nginxの設定ファイルの一部をいじることはありますが0から入れるのはほとんどやらないので意外と手こずって終わる頃には12時過ぎになってました。前日までにおばちゃんが用意してくれたisucon7の設定ファイルがあったのでそこまではまらなくて済みました。あたりがボトルネックになってました。おばちゃんがDBサーバとWEBサーバの分離などを担当することになりました。辛い、、、コードが辛い、、、。DBのカラム名をそのまま使っていたり違うkey名に変えたりと難読化されていて修正がだいぶ困難でした。そのコードがいたるところで使われていて呼び出し元の引数によって返す内容も変わったりするので、あぁ、今回のisuconのテーマはリファクタリングとか歴史的経緯とか闇かな?って思ってました。影響範囲が大きいのが嫌だったのでトップページ用の関数を新たに作りました。この修正なら動くだろと思って実行した結果エラーが出たりとpython力の無さがだいぶ出てました。pythonにしてしまったんだ、、、。レスポンスのjsonの構造を変えないようにフィールドとテーブル定義などとにらめっこすること3時間ぐらいでやっとスコアが上がる修正ができました。この時点でスコア1545。その後ゆずるくんのランクの固定値かや不要なフィールド返さない修正で2319。この時点で16時ぐらい。その間おばちゃんの2台構成も試してみたところスコアが下がったのでロールバック。users系の改修に入りました。これはそこまでスコアにはならないのですが明らかに遅くて他にも影響ありそうだったので悩みましたが手を付けました。usersも動くかわからないまま本番で確認しながら修正したので時間がかかって17時ぐらいになってました。この時点でスコアが2849。思ってえいやでやってみたらスコアが一気に7010に。同じことを全部のイベント処理にも適用しちゃっていいんじゃね??と最後のワンチャン実装を試したところadmin系ではエラーになったのでadminを除くevent処理の書き換えを試したところ更にスコアが伸びて16156に!!全員テンションぶち上がってました。これ以上はやる時間がなかったので記念写真撮って残り10分はひたすら祈ってました。結果はまぁ予選敗退だったんですけどね。それでも最後のライブ感は参加しないと味わえないなと思います。死ぬほど悔しいですけど!!!結果出た後しばらくこんな気持でした。来年同じ思いをしないために振り返っておきます。認識があってるのが大事。これも時間取りすぎたかと思いましたがやってよかったです。1コマンドでミドルウェア含めて最新の状態にできるのが本当に大事だなと思いました。去年はgit管理していながらmasterで動かないみたいなことがあって今年はめっちゃやりやすかったです。出題のinitializeが良かったというのもありますが。isucon7で次回はやろうと言っていたのができました。2017年10月23日めっちゃ便利。勝ちに行くのであればやはり自身のある言語で行くのが一番だなと思いました。違う言語で挑むのも勉強になるので一概には言えませんが。去年も書いた気がしますが気づいたら同じところをやってたみたいなのはもったいないのでなにか考えないとですね。alpでエンドポイント別の対応をしたんですが、アプリケーションコードの全体像を見る前に修正を始めてしまったので改修の割にスコアが伸びなかったというのがあったのかもしれません。DBにアクセスしないでメモリに乗せるのがほぼ定石になっていますが、そもそもDBの構造がおかしい(予約がないと座席の空き状態がわからないとか)のを直せなかったのが悔しいです。データ構造を変えるということに頭が回りませんでした。自分がこのサービスを作るならどういう設計にするかみたいなことを考えながらやる今年も予選突破は叶いませんでしたが解いていてじわじわスコアが上がっていくとてもいい問題だと思いました。運営の皆さん毎年ありがとうございます!あと3年連続で弊社オフィスを使わせて頂いてありがとうございます。外部の人でも快諾してくれて懐の深さに感謝しかありません。相変わらずよろしくおねがいします。見たらキャンプに行き...2018-01-22フィッシングショー2018に参加してきました[昨年|http://azihsoyn.hatenablog.com/entry/fishingshow_2017...2018-01-022017年振り返りと2018年抱負とかあけましておめでとうございます。2018年になりました。approvalにexpireを設定するflutterでStickyBottomAppBarを実現するflutterでネイティブplugin作ってみた振り返り自分とラブライブ振り返り2018isucon8に参加して予選敗退してきました月別アーカイブはてなブログをはじめよう!azihsoynさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。