getCategoryByIDをバグらせるまたバグらせてベンチ死んでチームメイトに罵られる。他にも、PRがあったほうがCR出来て便利だろ!って罵られる。ケツを叩かれながらさっさと直して動くようにした。getCategoryByIDが直るこれだけだとN+1問題の完全解消にならないのでベンチにはさほど影響がなかったはず。getSimpleUserByIDのオンメモリ化に取り組むgetSimpleUserは基本的にはオンメモリにできて、唯一出品数だけはリアルタイムに変わりそう。これも頑張ってオンメモリにする。これを使わせてもらった。使うのでドキドキした。考えるとincrementはアトミックにやらないということに実装してるときに気づき、地獄に落ちなかった自分に感動。どっちも使ったことがないライブラリでドキドキワクワク。例に漏れずGoわからなさすぎて苦労する。僕がアプリを弄っている間にsakuさんとakenshoさんが発見してくれた。saku「explainしたらサイアクな感じ。思考停止でindex貼っていい?」まあやってみて早くなればOKなのでとりあえず思考停止indexを貼って頂く。平文保存はルール違反_sakuが気づいた。マニュアルにも書いていたし、運営からも「平文保存はやめろ」とだけお達しが来る。そもそも暗号化ハッシュ化関数が満たすべき性質についての言及が一切無いので、困ってしまった。このままだと失格になってしまうし、暗号化しないといけないのだが、適当に性質を仮定して出戻りが起きたらサイアクなので、慎重にやることにした。『パスワードを平文で保存する』という意味は、ユーザが入力したパスワードをそっくりそのまま保存する、という意味と同値ですか?」と聞いてもらう。インデックスを貼ったりしおわる改善する。再度平文保存に関する質問をする。ここまで返事がないと見逃しているのかと思い、もう一度sakuさんに質問してもらう。理由はわからないが返事の保留は意図的なものだと判断して諦めることに。11500点くらいが出る。質問の答えが相変わらず返ってこないので、そろそろ平文で保存しているものを暗号として保存することにする。ISUCONに適した独自の暗号化関数を実装することにした。"#";}これを用いたログインは平文比較とほぼ同等の速度でありかつ強度も用途に適しているという判断になった。//実ははプレインではありません。nil}誤解を産む命名を含むロジックではあるが、コメントにもあるように、明らかにプレインではない。このあと、平文は破棄して、新暗号でデータベースに保存することにする。DBのクエリを叩くのが怖かったので完全に収集し直す戦略。収集しはじめの頃点数が2000点台まで落ちてびっくりした。bcryptやっぱりボトルネックだったんだね。着手しはじめる大体4000コの新暗号による暗号化済みパスワードの収集が終わる。点数が元に戻ってくる。ISUCON最後のほうは色々試したりして事故ったら元も子もないので、危ない橋を渡らないようにしようという雰囲気が漂う。再起動試験をやろうという話になる。個人的にオンメモリの出品数カウントとかめちゃくちゃこわいし大賛成だった。再起動試験をするとmysqlが先に起動していないという理由でisucari.golang.serviceが死んでいることが分かる。これは出品カウント以前の問題だったし再起動試験して良かった〜。再起動試験に成功し、出品カウントもうまくいってる。再起動した直後のフレッシュな状態でベンチマークを走らせる。最高得点11700くらいが出る。やった〜もうおしまいおしまい。最終的にインスタンス数は1でした。楽しかった〜!!スコアリング方式のおかげか超ベンチが安定していたし、快適だった。AtCoder社のホワイトボードにsnukeのイラストを描いて去る。運営がbcryptに改善の余地を設けたのが意図的なのかについて考えていたんですが、この記事を読む限りISUCON8の本戦ではbcryptの使用を明記されていたように見えます。http://isucon.net/archives/52598691.htmlパスワードのbcryptパスワードをbcryptでハッシュ化していましたが、これがアプリケーションがCPUをつかうほぼ唯一の箇所でした。「パスワードはbcryptでハッシュ化しなければならない」と仕様に明記されていたため対策できないような錯覚をさせていましたが、コスト(ストレッチング回数)に関しては何も言及していないためコストを最小値にすると大幅にCPUが改善するものでした。今回そのような指定はありませんでした。1.に関しては早い段階で訂正のチャンスがあったのにしなかったということは2.の線が濃厚で、それを強く信じています。返事が無かったことに関する理由は謎です。17日目の...2017-10-24ISUCON2017参加記akenshoさんとli_sakuと参加、最終スコア20万3000点くらい。日本国内予選お久しぶりです。月別アーカイブ参加グループプログラミングはてなブログをはじめよう!kyuridenamidaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。