ISUCON7にチーム「common.php」で出場しました。uzullaがブログスマートフォン用の表示で見るuzullaがブログuzullaがブログです。2017-10-22ISUCON7にチーム「common.php」で出場しました。isucon.netどうみても予選敗退です本当にありがとうございました。ISUCON本戦出場で、人権と職を獲得する目論見はかないませんでした。結果として最高時スコアは14〜15万あたり、これでは出場の芽がみえないと色々いじってスコアが下がり最終は11〜13万くらいでした。グラフをみていても夕方頃まではなんとか下をウロウロしておりましたが、相変わらずの伸び悩みです、最後の1時間、思わぬロスタイム*1で気分が代わり、勢い良く大鉈をふるったらスコアがのびたので、夕方に躊躇したのが悪かったと思いますね。今回3年ぶりにコード書く*2役割だったので、PHPをチョイスし、「ついにフレームワークが最新Slimになった!!!!!」と喜びながらの開発となりました。!!最後あがかなかったら上に...とかおもってしまうけど、まあいうほど順位変動ないな、もっと攻めなければダメ。今回はすごく素直な課題で、みたことがあるような問題を見たことがあるような感じで解決していきました。ベンチマーカーもキューがガンガン来てくれるし、エラーメッセージも親切、すぐにFailがわかる!これは最高!本当によかったです。構成common.phpという普遍的なチーム名にしたので、ミドルウェアは吊るしのnginx+phpのままです(?)redisとかそういうPHPerが普段使わないであろう(?)ものは使わない事にしました。HHVM差し替え&組み込みhttpdの投入はすこし悩みましたが、hhvmがPHPからはなれつつある今、矜持は本家!ということで変な差し替えも無し。7.2RC4にするかは迷ったけど(自分はもう普段から使っているし、実際多少速くなるので)、人手が足りないのでパス。3台構成を生かすところまでいけなかった、結局2台でゴールです。結果Web+DB構成でウェブのCPU100%、DBのCPUがピーク70%くらいで時間切れになったのが心残りです。変なところをいじっても性能があがらないのがよい今回もヘンテコな(本番ではつかわないような)パラメーターブッコミチューニングはあんまり効果がなくて、粛々とリクエストやクエリを減らすとスコアが伸びる、というのがよかったですね、実に競技性がある。コードをつらつらとよんでいてsleepによるトリックにはウケた、チャットで昔みたことあるテク(?)だ。他の言語ではこのsleepでもいいんでしょうね...。(これを伸ばすなど工夫するとスコアが伸びる...らしいけれど、Preforkのphpでは普通にきびしいので無理。現実で必要ならevent駆動に書き換えるか、クライアントのJs側でwaitをいれなければいけない)効果があった施策インデックスを張るsleep()をそっとはずす(js触ってもスコアに関係ないのでDoS状態になるのは放置)initなどで画像を書き出す。ch毎のメッセージ数をキャッシュするテーブルを作成(次の行へ)アクセスパターンをみたら既読無し(=そのユーザー固有ではなくてよい既読数)のchが多いので無駄なループが多い、既読があるchだけcountし、全ch毎の件数テーブルとマージすることにした。メモリもCPUを使い切れていないのでコア数無視してワーカー数盛りまあ、大体DB直してたよね。期待もしてはいなかった。良いワーカー数の選定3台構成(雑に3台にしたらスコアがおちたのはヘッダーだとわかってはいたが...)残念です。lessと心眼でmicrotime()とerror_log()による温かみプロファイル()Chrome(のリクエストをcurlにするやつ)+curl+jqコード修正はサーバー上でvimCPU利用率はhtopとvmstatこうやって書くとホント素手以外のなにものでもない気がしてきた。Profilerは「大量に発行されている(つまり重要な)クエリがなにか」を見やすいのが良いですね、有料だけど。あと、qpsが見れるのでリアルタイム負荷メーターとしてもお役立ち。しなかったこと秘伝のタレの準備(最後にためしに昔のタレいれたけど、あまり変わらず)デプロイツール類の整備(コード書くのが一人なら、なんだかんだ素手のほうが速い。PHPStormにターミナル経由でコピペして整形したくらい)ログ解析ツール類の整備(個人的には、過去そんなにやくだたなかった)xhprofなど(ISUCONの規模なら、読めばわかるしmicrotimeとerror_log関数で十分)phpやnginxの最新版への挿し替え(7.1だったので十分)E_NOTICE警察(まあISUCONだしね、しかたないよねw)素振り(本当はやりたかったけど、諸般の事情です)これらは参考にすべきだとは言わない、何回か参加した個人的な感想です。良いツールを揃えるのは楽しいし、それはいいと思うんだけど、毎日毎日触っているツールでないといきなりハマると思う。recoveredphpのログがどこに出ているかちゃんと確認せずにすすめて、エラーに気づかず手戻りexplain叩いたらmysqlから反応がなくなってマジで焦ったが、家のインターネットがおちていた。今回は事前の素振りはせず、当日の12時から23時まで(このエントリ含む)の参加でしたので、ちゃんとやっています、大丈夫です。やっています、本当です。23:29ISUCON7にチーム「common.php」で出場しました。Tweet広告を非表示にする関連記事2016-09-19ISUCONでベンチをするたびに、Slackに集計を張り付ける件みなさんのISUCONの参戦エントリを楽しく読みつつ、心にはダメ...2016-09-18ISUCON6参加してきました!土曜日参加でした。»プロフィールid:uzullauzullaがブログです。参加してきました!月別アーカイブ参加グループWindows開発者はてなブログをはじめよう!uzullaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。