amakan new relic 2017-03-19
amakan books のDBスキーマを新しく設計するにあたり、性能面で問題となっているところを洗い出す活動を始めた。第三者にとっても何かの参考になるかもしれないと思い、無償版の New Relic で計測した過去24時間のデータのキャプチャを貼ってみることにする。
Overview

リクエストの少ない小規模なサービスなので、平均値や中央値で見るとまあそこそこ妥当な結果だと思う。ちなみに Docker, Puma, Rails, MySQL, Redis, t2.micro という感じの構成。DB 設計の歪さから、大量の MySQL のレコードを取得している箇所があり、しかもサボって各レコードごとに Ruby の豪華なクラスのインスタンスを割り当てているので、そこがボトルネックになっているかもしれないなという推測をしている。
Transactions

新刊リストの iCalendar のデータを返しているところがやけに遅いことが分かる。RSS は発売済みのものだけ返せば良いが、iCalendar はカレンダーなので過去未来すべての新刊データを返す必要があり、苦しいことになっている。やはり新刊リスト計算処理が簡単になるような DB 設計にしなければならない。