ブログ

エンジニアリング

Mythexの開発と運用について。何が壊れ、どう直したかも含めて。

エンジニアリング

Mythexの開発と運用について。何が壊れ、どう直したかも含めて。

  • 再公開に失敗しても、動いているバックエンドは消えない — 再公開に失敗すると、アプリのライブAPIが削除されたり、壊れた新バージョンが動き続けたりする恐れがありました。Mythexが失敗した公開を元に戻す仕組みに加えた3つの修正をご紹介します。
  • サーバーごとではなく、一度だけ鳴るアラート — 1日1回のはずのアラートが、ある日の午後に5回届きました。サーバーが2台あってデプロイがあると、メモリ内の重複排除が機能しなくなる理由と、共有ストアでそれを修正した方法です。
  • 待たせずに、より大きなワークスペースへ移行する — 2GBへ移行したあと、ワークスペースの4分の1が1GBのままでした。最初の修正では、1人のユーザーが7分待つことになりました。何を変更し、さらにどう変更し直したかをご紹介します。
  • データベースの課金は、実際の使用量で決まる — 以前は各アプリのデータベース費用を見積もっていましたが、その見積もりは両方向に外れていました。今では、すべてのデータベースを計測された使用量に基づき、1時間単位で課金しています。
  • 公開直後にクラッシュするアプリを検出する — 3件の公開が、APIが起動のたびに数秒でクラッシュしているにもかかわらず、ヘルスチェックを通過しました。原因は、最大5件しか保持しないリストでクラッシュを数えていたことでした。
  • 画像を多用するエージェントのターンをメモリ内に収める — カタログのスキャンを見続けていたエージェントのターンが、952 MBでメモリ不足になりました。保持が長すぎた3つの別々の原因と、その修正方法を説明します。
  • 長いエージェントのターンをコンテキストウィンドウ内に収める — サブエージェントは、モデルに拒否されるほど大きくなったり、余裕を確保するために早々に止まったり、ロシア語のトークンを数え間違えたりしていました。長い作業を完了させた3つの修正です。
  • スマートフォンがスリープしてもチャットを維持する — スマホはスリープし、タブを切り替え、作業中にネットワークを失います。2つのバグのせいで、チャットが止まったり、あとから返信が途中までしか表示されなかったりしました。その見つけ方と修正方法です。
  • 重いチャット1つが、私たちのAPIを停止させかねなかった話 — 9月28日、本番のAPIサーバー2台が同時にメモリ不足になりました。最初の対策はメモリの増設でしたが、本当の修正は、チャット履歴を件数ではなくサイズで読み込むことでした。
  • Publishを2回押しても、公開は1回になりました — 同じアプリへの公開リクエスト3件が84ミリ秒差で届き、それぞれがデプロイ全体を実行していました。どの公開を通すかをデータベースに決めさせ、ほかの公開には正直に伝える仕組みに変えました。
  • 自社サイトを直して得たSEOの教訓 — FAQマークアップの重複、Googleに表示された誤ったサムネイル、誰もクリックしなかったテンプレートページ、エッジで拒否されていたパス。mythex.aiで見つけて直したことです。
  • 静的サイトは、再公開の間も稼働し続けるようになりました — 以前は静的サイトを再公開すると、新しいビルドをアップロードする前に公開中のファイルを削除していました。今は、新しいサイトが配置されるまで古いサイトが配信され、変更は数秒で反映されます。
  • 進行状況のラベルに潜んでいたメモリ不足によるクラッシュ — AIエージェントが大きなファイルを1つ書いている最中に、メモリ不足で停止しました。原因はモデルでも並列のサブエージェントでもなく、ステータスラベルが41,000回再送されていたことでした。
  • サーバーを凍結させた、スワップファイルの欠如 — 本番サーバーはクラッシュせずに応答しなくなりました。メモリ不足によるkillはなく、スワップのないマシンでページキャッシュがスラッシングしていたのです。何が起きたか、何を変えたかを説明します。
  • 死んだ接続を使わずに、データベースを起こす — スリープから目覚めた公開アプリは、スリープ中に死んでしまったデータベース接続を使おうとして、最初のリクエストを10〜12秒保留していました。それを2.3秒まで縮めた方法です。
  • 自分たちのサービスに、自分たちがレート制限をかけていた — APIのアドレスごとのレート制限が、私たち自身のサービスを1人の忙しいユーザーのように扱っていて、本番環境で429エラーが出始めました。原因の見つけ方と修正方法です。
  • Mythexのサーバーを、ARMに移した理由 — 重い処理がプロジェクトごとのサンドボックスに移ると、サーバーのメモリ使用量は3分の1になりました。より小さなARMインスタンスで、コストは約30%下がりました。その方法です。
  • デプロイを502エラー0にした方法 — デプロイと競合するウォッチドッグと、サーバーが去るより遅れてトラフィックを止めたロードバランサー。両方を見つけて直し、デプロイごとの502を10件からゼロにした方法です。

Mythex · 料金 · よくある質問 · ガイド · ブログ · 活用事例 · AIで開発 · テンプレート · Mythexを比較 · AIアプリ開発用語集 · AIアプリ開発の無料ツール · Mythexについて

Mythexの活用先

  • 仕事のためのMythex
  • 創業者のためのMythex
  • PMのためのMythex
  • デザイナーのためのMythex
  • マーケターのためのMythex
  • 営業のためのMythex
  • オペレーションのためのMythex
  • 人事チームのためのMythex
  • Webサイト
  • プロトタイピング
  • 社内ツール
  • パートナープログラム

ガイド

  • 作り方
  • 比較
  • 用語と概念の解説
  • アイデアとローンチ
  • プロンプトとリリース

ブログ

  • エンジニアリング
  • プロダクト
  • 会社
English Português (Brasil) Deutsch Français Español Italiano हिन्दी Bahasa Indonesia ไทย 한국어 العربية 简体中文 繁體中文(台灣) 繁體中文(香港) Русский Türkçe Tiếng Việt Polski Nederlands Українська فارسی اردو Español (España) Français (Canada) Português (Portugal) Shqip Bosanski Български Català Hrvatski Čeština Dansk Eesti Suomi Ελληνικά Magyar Íslenska Latviešu Lietuvių Македонски Norsk bokmål Română Srpski Slovenčina Slovenščina Svenska বাংলা ગુજરાતી ಕನ್ನಡ മലയാളം मराठी ਪੰਜਾਬੀ தமிழ் తెలుగు Bahasa Melayu Tagalog မြန်မာ Қазақ тілі Монгол Հայերեն ქართული አማርኛ Soomaali Kiswahili