問題タブ [long-running-processes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ASP.NET の長いタスクが他のページをハングさせますか?
優れた SpreadSheetGear ツールを使用して、オンザフライでレポートを生成しています。レポートがシンプルで 1 秒以内に完了したので、最初は素晴らしかったです。現在、私はより複雑なレポートに取り組んでおり、約 30 秒から最大 1 分かかります。これは問題ではありません。アクティビティ イメージを表示して、ユーザーを待たせるだけです。
私が見つけた問題は、2 人のユーザーがサイトに来たときです。
- ユーザー 1 がサイトに来る
- ユーザー 1 は、30 秒かかるレポートを実行します。
- ユーザー 2 がサイトに来る
- ユーザー 2 は、ユーザー 1 のレポートが完了するまで待機し、その後ページが読み込まれます。
ユーザー 1 に対して実行中のレポートは、完了するまでサイトをハングアップさせます。何が起こっていますか?どうすれば修正できますか?
asp.net - 長時間実行される同期要求を使用するASP.NETアプリケーションに関する考慮事項
Windows Server 2008 64ビットでは、ASP.NETアプリケーション(ASP.NETスレッドプール、同期要求処理を使用)が長時間実行されている場合(> 30分)、IIS7.0および.NET4.0。Webアプリケーションにはページがなく、主な目的は、巨大なファイル(> 1 GB)をチャンク(〜5 MB)で読み取り、それらをクライアントに転送することです。コード:
単一のプロデューサー-単一のコンシューマーパターンが実装されているため、リクエストごとに2つのスレッドがあります。ここではタスクライブラリを使用していませんが、このシナリオで従来のスレッド作成よりも優れているかどうかをお知らせください。(.aspx)ページの代わりにHTTPハンドラー(.ashx)が使用されます。ストレステストでは、CPU使用率は問題ではありませんが、単一のワーカープロセスでは、210の同時クライアントの後、新しい接続でタイムアウトが発生します。私はセッション状態を使用しないので、これはWebガーデニングによって解決されます。私が見逃した大きな問題があるかどうかはわかりませんが、あなたの意見で他にどのような考慮事項をとるべきか教えてください。
たとえば、通常のASP.NETページは5分未満で処理されるため、IISは「接続タイムアウト」のために長時間実行されているTCP接続を閉じる可能性があるため、値を増やす必要があります。
私はあなたのアイデアに感謝します。
javascript - 実行時間の長い関数で jQuery で変更された DOM の即時更新を強制する
実行に約 2 秒かかる JavaScript があります (複雑な最適化アルゴリズム)。関数の先頭で特定のスパンを「作業中...」に設定したい。関数の最後までスパンが変わらないことがわかります。
DOM 変更の伝播を強制するにはどうすればよいですか? または、これを別の方法で一緒にアプローチする必要がありますか?
ボタンの onclick から関数を呼び出します。
関数は次のようなものです。
ruby-on-rails - ユーザーが(Railsで)待機している間に大量のデータを処理するためのベストプラクティスは?
ブックマークレットを使用すると、現在のブラウザー ページのすべての URL が処理のために Rails 3 アプリに送信されます。舞台裏ではTyphoeusを使用して、各 URL が 2XX ステータス コードを返すことを確認しています。現在、RailsサーバーへのAJAXリクエストを介してこのプロセスを開始し、処理して結果を返すまで待ちます。小規模なセットの場合、これは非常に高速ですが、URL の数が非常に多い場合、ユーザーは最大で 10 ~ 15 秒待機する可能性があります。
Delayed Job を使用してユーザーのスレッド外でこれを処理することを検討しましたが、これは適切なユースケースではないようです。ユーザーは結果を確認するために処理が終了するまで待つ必要があり、遅延ジョブはジョブが開始されるまでに最大 5 秒かかる場合があるため、処理ができるだけ早く行われるとは限りません。残念ながら、この場合、この待ち時間は受け入れられません。
理想的には、私が起こるべきだと思うことはこれです:
- ユーザーがブックマークレットをヒット
- データは処理のためにサーバーに送信されます
- スレッドをスピンオフして処理を実行している間に、待機中のページが即座に返されます
- 待機中のページは、処理の結果について ajax を介して定期的にポーリングし、待機中のページを更新します (例: 「処理された 567 個の URL のうち 4 個...」)。
- 待機中のページは、準備が整うと結果で更新されます
追加の詳細:
- Heroku を使用しています (実行時間の長いプロセスは 30 秒後に強制終了されます)
- ログインユーザーと匿名ユーザーの両方がこの機能を使用できます
これはこれを行う典型的な方法ですか、それともより良い方法はありますか? 処理中にDBを更新する独自のオフスレッド処理をロールする必要がありますか、それともこれに使用できる(そしてHerokuで動作する)遅延ジョブのようなものがありますか? 正しい方向へのプッシュは大歓迎です。
.net - 長時間実行され、リソースを大量に消費するWebサービスを設計するための推奨事項
複雑な計算を行う.NET関数があります。渡されるパラメーターに応じて、関数は次のようになります。
- 実行には数分から数時間かかります
- 計算中にシングルコアを100%使用します
- 数百MBから数GBのメモリが必要です
- 数MBから数GBのデータをディスクに書き込みます
- OutOfMemoryExceptionを含む例外をスローする可能性があります
ディスクに書き込まれるデータの量は、関数のパラメーター化から正確に予測できます。関数のパラメーター化から他のリソース要件を予測する簡単な方法はありません。
この関数をWebサービス経由で公開する必要があります。このサービスは次のようにする必要があります。
- 計算中に問題が発生した場合は、弾力性があり、適切に報告します
- パフォーマンスを大幅に低下させることなく要求を処理するのに十分なリソースがあり、それ以外の場合は要求を適切に拒否するのに十分なリソースがある限り、同時要求を処理できます。
最初のリクエストで進行状況をポーリングできるステータスリソースを返すようにすることで、長期的な性質を処理するつもりです。計算が完了すると、このリソースは、クライアントがダウンロードできる出力データの場所を提供します(おそらくFTP経由で)。
他の要件をどのように処理するのが最善かについては、あまり明確ではありません。電卓のインスタンスを維持し、現在使用されているものを追跡する、ある種の「計算プール」を検討していますが、詳細はわかりません。
同様の状況の経験がある人は何か提案がありますか?ソリューションがWindowsボックスで実行できる限り、すべてのテクノロジオプションを検討できます。
c++ - 巨大な C++ プログラムの実行時間を計算する
時間を見積もるために推奨される方法は、clock() 関数を使用してから、CPU サイクル数をサイクル/秒で割ることです。
私の問題は、実行しようとしているプログラムに時間がかかることです (数時間)。これは、(long int を返す) clock() 関数がガベージ値を返すことを意味します (max long int がこれに対して十分な大きさではないため)。
提案はありますか(内部ループの時間を見積もり、それらを追加することは別として)?
events - カスタムイベントハンドラーの Qt QApplication::processEvents()
長いプロセスがあるイベントハンドラー内で QApplication::processEvents() を呼び出すことは可能ですか? プログラムが Segfault で終了します。私のコードは次のようなものです:
jquery - コントローラーのアクションは、異なる要求に対して同期しているように見えますか?
以下のコードは非同期で動作するはずだという印象を受けています。
ただし、firebugを見ると、リクエストが非同期で起動されているのがわかりますが、結果は同期して返されます。
コントローラ:
Javascript / jQuery:
追加情報:
- IIS 7.0
- Windows2008R2サーバー
- VMWare仮想マシンで実行
誰かがこれを説明できますか?Status
アクションは、終了するのを待つのではなく、実質的にすぐに戻るべきではありませんCreateSite
か?
編集:
長時間実行されているプロセスを開始し、ステータスの更新を取得するにはどうすればよいですか?
.net - .Net長時間実行スケジュールコード実行
私は現在、いくつかのプロジェクトに取り組んでいます。ここでは、日時を指定して、ある種のメソッドを実行できる、ある種のコンポーネントがあればいいのにと思っています。
長時間実行するプロセスとしてWindowsWorkflowFoundationを使用してこれを実行できることは知っていますが、これは特定のことに適していますが、代替手段はありますか?ワークフローは詳細が正確に単純ではないため、軽量タスク用にもっと単純なものをデプロイできると便利です。たとえば、ネットワークフォルダを1日1回チェックし、30日以上経過したファイルを削除する方法があります。これは夢のようなパイかもしれませんが、これは特定のありふれた保守タスク(スケジュールされたSQL操作、ファイルシステムのクレンジング、定期的な電子メール送信など)を自動化するのに非常に役立ちます。必ずしも.Netである必要はありませんが、それが私の出身です。何か案は?
mysql - MySQL - クエリの実行に許可される最大時間を制限できますか?
mysql サーバーでのクエリの最大実行時間を制限する方法を探しています。これは構成ファイルを介して実行できると考えましたがmy.cnf
、ドキュメントに関連するものは見つかりませんでした。これができるかどうか誰でも知っていますか?ありがとう。