未来の僕へ

未来の僕へのライフログ

25発目〜EOS案件の性能検証に潰され続けた平日〜

前回の記事からほぼ1ヶ月と日が浅いが、この1ヶ月は遊びにも行かず卓球もせず、ひたすらプレ性能検証に向き合っていた。いつかTwitterで誰かが「エンジニアとしての戦闘力を図る際に障害対応や性能に一定の成果が出るまで向き合い続けたかを見る」という内容を見ていて、共感するとともにできれば避けてきたかったことだなと感じていた。

前回執筆した10月末はまさに性能検証が始まる1週間前というタイミングで、実施環境のスケジュールも立って逃げ場のない状況だった。
11月初旬から早速性能ツールを使って新環境にトラフィック流す作業をスタート・・・させるが、早速大きな壁にぶち当たる。


①実行環境がEOS環境までネットワークが繋がらない問題

性能ツールはいつもと別の仮想環境で実行するのだが、その環境はデフォルトでゲストシステムとの環境に繋がっているわけではなく、いちいちその環境のhosts設定を行なって名前解決していかなければならない。
で、そのhosts設定をするためのバッチが仮想環境上にあるのだが、そのバッチを実行してもEOS環境まで繋がらず・・・バッチの中身を解析して、そもそもどこからDNS拾ってきているのかを読み解くことからスタート。結果的に旧環境のDNSサーバを参照していたのだが、正直そのサーバについてもEOS環境で刷新されることを知らなかった。失念レベルでなく、意識すらしていなかった(反省)。
PJメンバのお客さん側に偉く詳しい人がいるのでその方の力をフル活用して解決。これでネットワークの問題は解決。(これで1週間)

 

②性能ツールの向き先(FQDN)を全部更新しなきゃいけない問題

変数として設定されているツール内の接続先サーバ設定だが、そのサーバ設定に特化した項目がなく、変数として機能している範囲がAPIレベルのみという残念な事態に直面する。さすがに1つ1つ手動修正は辛いので有識者に声かけしてアドバイスを頂こうとしたが、結局全部手動でやるしかなさそうという結論に・・・。結論が出てから全部実施したけど多分これだけで2時間かかった。

 

③実行した瞬間全然APIが正常応答にならない問題

ツールからAPIを実行することはできたが、応答値が軒並みNG。基本的に400 Bad Requestなことから伝文内容がサーバで待ち受けているものと乖離しているか、伝文内容でもHTTPヘッダ情報から間違っている可能性も。しかしエラー分が暗号化されており、それを都度複合化ツールにかけて可読化し、したところでなぜエラーになっているのか理解できず、サーバ上のログも日本語表記されない状態&Infoログしか出ない状態というトラシューできるような環境ではない。
出力ログの日本語化、ログレベルをInfoからDebugへ変更、DBテーブルへ事前に座布団データをInsertすることでトラシューが進み、1部のシナリオは全通という進捗を見せる(1週間)。

 

④それでも通らないAPI群。

1部のシナリオ全通まで進捗したのにオンライン系のAPIが全然通らない。全て同じエラー内容なのでベンダーさんにヒアリングしたところ(状況を整理して確認作業ができるだけの情報を揃えることも滅茶苦茶負荷高いので進捗が遅い)、アプリ↔︎サーバ間の認証チェックを無視する設定で環境構築しないといけないことが発覚。どうやら性能検証のたびにそのような資源を用意するよう頼まれていたようで、我々はその辺のナレッジも無く進めていたようだ。
EOS環境からその環境構築も自分でできるように改善されたためすぐに環境構築のし直し。無事、全てのシナリオAPIが着弾できるようにまでなった。
今までも直面するトラブルが解消される度に達成感を感じていたが、この時が1番気持ち良かったかもしれない。新卒時代のネットワーク設定でPingが通った時の感動に近い。(これも1週間)

 

⑤性能ツールで流したはずのトラフィックがサーバ上で表示されない問題

まだトラブるの??と泣きたくなる気持ちを我慢。
全シナリオを実行し70分ほど放置し、ゆっくり性能でも見るかなぁーと色々確認していたところ、サーバログ上に想定のトラフィックの30%〜40%ぐらいしか記録されていないことに気づく。
性能ツール上ではサーバに到達して応答値も受け取っていて、その上でOKと出ているのだが・・・ログのGrep方法が間違っているわけでもなく、CPU/MEMなどの性能面もそれなりに負荷かかっているので、やっぱりトラフィックは受けていると思われるが・・・不思議なことが起こっているものだ。
原因が全然わからないので、API単発実行、1シナリオだけ実行などスモールステップでトラシューをするも、複数シナリオ実行する際に乖離が発生することが発覚。
原因は正直不明だが、またもや有識者の「ログレベルを下げればいけんじゃね?」という意見を採択し、DebugからInfoレベルに修正したところちゃんと出た。
なんだったんだ・・・これも2日ぐらい向き合っていたかな。

 

ということで5つのトラブルをなんとか乗り切って性能ツールで負荷掛け成功。ここでやっと性能検証のスタート地点に立てたという認識だが、この初見殺しやツールのトラップの数々が実施のハードルを上げている原因である。
それ故今の部署にナレッジを持つ人もいない。
現時点で私は性能ツールの有識者として昇格された状態であり、他メンバーへナレッジ共有する立場でもある。
落ち着いたらこのトラブル達をしっかりまとめて、次世代がつまづかないようにしよう。

 

つまづく事は非常に大事だし、結局そこで学ぶことが知肉になるのだけど、性能検証でつまづくべきは使用ツール問題ではなく、性能そのものの問題であるべきだ。