1
2

More than 3 years have passed since last update.

uWSGIのチューニングで調べたこと

Posted at

事象

  • メモリ使用率が90後半に張り付いたまま、コンテナごとホストに落とされる
  • リクエスト数増大につれ、メモリリークっぽい動きをしている
  • Worker再起動すれば、メモリ使用率が下がる

調査

  • max_requests ってオプション使えばリクエスト数ベースでWorkerをリロードしてくれるっぽい
  • ただし、すべてのプロセスが同時にリロードした場合、リクエストを受け付けられないので、同時に落ちないようにしなきゃならない
  • max_requests_delta ってオプションでずらせるようにマニュアルに書いてある
  • なお、max_requests_delta はpipからインストールした場合使えない模様
  • 利用する場合は、ソースからビルドしなきゃならない

対応

--idle--cheapで一定時間リクエスト来なかったらworkerを停止するようにした
参考

結果

image.png

  • 一定負荷をかけた後、放置するとメモリ使用率は初期起動時と同程度まで下がった。
  • 停止した後のリクエストは起動時間分処理が遅くなる、が許容できる範囲だった。
  • 起動時にスパイクがかかった場合のOK/NGはまだ計測していない(これから計測する予定)

まとめ

  • 今回やった方法は比較的短い間隔で定期的にリクエストが来るようなアプリケーションでは使えない
  • 日中にピークが来て深夜はほぼないみたいなアプリはidleを調整して利用時間外に停止するようにするといいかも
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2