質問
裏でとても重たい処理が走るようなWEBアプリの負荷分散?分散処理?同時実行数の制限?ってどうやりますか?一般論を教えてください(Pythonを使っている人はPythonでの実装方法をお教えてください)
状況
裏で重たい処理を動かすWEBアプリを作成しております。結構重たいので、同時に100人くらいで処理を流すと大量にエラーが発生します(根本のプログラムの問題か、メモリが枯渇して強制的にKILLされているかわかりませんが。。。)
環境
Python
1サーバ:Nginx 2アプリ:Django 3並列処理:Celeryかthreding
現状に関する追記
テストの段階です。HeadlessChromeとSeleniumを用いて、テスト用サーバーからほとんど同時に100ユーザーほどでアクセスしています。Jmeterなどのツールの使いかたを覚えている時間がなかったためです。この際、データベースに保存しているデータから、正常に全ユーザーがアクセスできているかを確認したり、ページ遷移の際にスクリーンショットをとって、正常にページ遷移が行われているか確認しています。しかし、100ユーザーでアクセスした際、CPU使用率は低く、メモリ使用率が低いのにもかかわらず、何分経っても、ページが遷移しない状況がありました(ご指摘のような「一つ一つの処理が実行中の間はレスポンスを返す処理は行っていません」)このような状況はユーザー数が増えるにつれ、顕著に現れます
独り言
このような場合どんな方法で、同時接続に対処しますか?thredingって同時実行数の制限ってできるんですか?Celeryはworker数やらconcurrencyやら指定したら、溢れたタスクは待機してくれますが、、、
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。