ソバガラマクラスマートフォン用の表示で見るソバガラマクラこの広告は、90日以上更新していないブログに表示しています。@m0t0k1ch1予選を無事に突破し、本選に参加してきました。やったこと問題の形式は各チーム3台のマシンが与えられ、その全てで同じアプリケーションが起動しているbenchmarkは実行時に指定した1台に対して実行される3台すべてを使う必要はないという感じです。アプリの内容は予選よりも軽めで、幾つかの外部サービスAPIをユーザー指定のクエリで定期取得するというもの。データ表示用の画面の他に、クエリ設定画面、ログイン/signup画面などが実装されていました。初期ベンチは1000点前後。1台でkey-pairを作り共有。全台にsshできるようになったところでnsshを利用してtool類を整備していきました。mysqlこの辺でアプリを眺めてた@MacoTasuが「mysql繋げない」と。psqlわかんねーぞ...となりました。slowクエリ見たりindex張ったり、my.cnf的なものはどれぞ?といろいろ不安を感じ、DBをpostgreからmysqlにしてしまおうと大きくかじを切りました。「初期化されたpostgreからcsvを吐いてmysqlに流す。」と書くとまあ行けそうな感じがしたの。結果としてはそんなにうまくいくはずもなく、csvの一部になったjson部分をシングルクオートで囲んだりしてた。(Vimのマクロは直感的で便利!!!)データにはマルチバイトもあったので、csv吐くところか取り込むところあたりで文字化けにも悩まされてスコアを落とすことに...。これは結局どこで起きてたのかわからないまま終わってしまった。initializeがpostgreの方にかかっていたり細かなミスもあって、一部文字化けしてるけどとりあえずmysqlでアプリが動いたのが15時くらい。speedup時間もない中tryしたこととしては外部APIのendpointのリストをキャッシュ認証の方式を変更リクエストを1台のnginxで受けてアプリを2台にetc.初期実装ではsignup時に決定されるsaltとpasswordからsha-512で生成したhash値をDBに保存し、取得時には毎回postgreのdigest()で再計算していました。ここの計算コストをカットするために単純にmailアドレスのドメイン部分をpasswordとして置き換えてしまい簡略化しました。(レギュレーション的にokなのか?)あとは外部APIにリクエストするところが一番のネックになっていたので、ここを並列にしようとParallel::ForkManagerでざっくり書いて見るも結局うまく動かせず...。しているうちに決定打を打てないままタイムアップとなってしまいました。振り返りmigrate?結果から振り返るとDBの入れ替えは良い選択ではありませんでした。「migrationが思ったより詰まったなぁ」とか「いやそもそもpostgreももうちょいいじれないと...」というのもありましたが、本質的には今回の出題、DBはほとんどネックになっていなかったのです。推測するな、計測せよですね。切り戻し変更は基本的に各自のbranchで多種の変更を同時に(同じbranchで)行わないpush前にbenchが実行中かどうかを確認benchにfailしたもの、スコアが上がらなかったものはmasterに取り込まない予選では割りとできてたことが全然できてなかったなぁ。benchのfail率も予選に比べてかなり高くて、心やすまる時がありませんでした。殆どの時間fail見てた。慌てていろいろやってたらいつの間にか外暗くなっててさらに焦ったり。使用言語chatzmersは予選と同様使い慣れたperlを選択しましたが、今回の出題ならgolangとかのほうがスコア上げやすいかなと思ったり。なんにせよ問題見てからいろいろ選べるようだと強いですね。{}とか初見だったしperl力もまだまだ足りない...。successそれでも予選の反省を活かして競技終了前に再起動試験を行い、結果としてはスコアを残すことができました。激遅ですが僕らのサーバーはリクエストされたページを返します!これができないと入社1年目に舞い戻ってしまいますのでsuccessできてよかったです。まとめ本選も楽しかった!みんなで同じ会場に集まるのいいですね。ランキング眺めて一喜一憂したり。練習も含めてISUCONを通してとても良い経験ができました。出題/運営の皆様には感謝してもしきれません。次回も参加して、もっとスコアをあげられるよう精進したいと思います。parallel月別アーカイブはてなブログをはじめよう!t1macrggsさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。