NGINX、OpenResty、および各バックエンドのトレースとトラブルシューティング

Yichun Zhang、OpenResty Inc.創業者兼CEO

オンライン環境で稼働中のnginxプロセスが、メモリ、CPU時間、ディスクI/Oリソースを過剰に消費していませんか?オンライン環境で非常に遅いリクエストがランダムに発生するものの、オフライン環境では再現できないことはありませんか?原因がまったく分からない不可解なNGINXエラーログメッセージを目にしたことはありませんか?本番環境でランダムに発生するnginxプロセスのクラッシュやコアダンプにお困りではありませんか?

NGINX Conf 2018のセッションでは、YichunがNGINXとOpenRestyにおける実環境のさまざまなパフォーマンス上の問題やその他の動作上の問題を調査し、動的トレーシングなどの高度な事後デバッグ技術を使用して、本番サービスを中断することなく、稼働中の環境で原因を迅速に特定する方法を解説します。

Yichun氏は、GDB、SystemTap、BCC/eBPFなど、さまざまなオープンソースのデバッグフレームワークの長所と短所を説明・比較し、本番環境のDockerコンテナをトレースする際に特有の課題についても簡単に解説します。続いて、これらのデバッグ技術を統合し、使いやすさ、スケーラビリティ、拡張性を新たなレベルへと高める新しいOpenResty Traceプラットフォームを紹介します。特に、マイクロサービスメッシュやCDNネットワークのトラフィックゲートウェイクラスターなど、分散オンラインシステムでの活用に焦点を当てています。また、OpenResty Traceが提供する汎用デバッグ言語を使用して、カスタムトレースツールを作成する例も紹介します。

Yichunはさらに、実例を用いて、OpenResty Trace上の高度なトレーシングツールをNGINXコアおよびLuaJITを使用するOpenRestyコアに活用する方法を紹介します。また、PHP、Python、Perl、Rubyなど、NGINXまたはOpenRestyの背後でFastCGI、uWSGI、NGINX Unitを介して稼働する従来型バックエンドサービスのトレーシングについても説明します。最後に、NGINX、OpenResty、またはそれらのバックエンドアプリケーションからアクセスされるPostgreSQL、Memcached、Redisなどのデータサービスをトレーシングする例を紹介します。