問題タブ [contention]
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.
boost - boost::unique_locks は呼び出された順序で付与されますか?
Boost Synchronizationに関するドキュメントを調べましたが、 aboost::unique_lockが順番にロックを達成するかどうかを判断できないようです。
つまり、2 つのスレッドが既にロックされているミューテックスをロックしようとして競合している場合、ロックが解除された後、ロックしようとする順序は維持されますか?
google-app-engine - GAE データストアの競合の問題
私たちの GAE アプリは、NDB に別の Web サイトのリレーショナル データベースのローカル コピーを作成します。ユーザー、テーブル、行、フィールドの 4 つのエンティティ タイプがあります。各ユーザーには多数のテーブルがあり、各テーブルには多数の行があり、各行には多数のフィールドがあります。
SomeUser > SomeTable > ARow > AField
したがって、各ユーザーは 1 つのエンティティ グループになります。特定のユーザーのすべてのテーブル (およびその行) を消去できる機能が必要です。~5 操作/秒の競合制限を回避しながら、すべてのテーブルとすべての行を削除する正しい方法は何ですか。
TransactionFailedErrorエンティティ グループで競合が発生したため、現在のコードは s を取得しています。(私が見落としていた詳細は、特定の値に設定された属性「サービス」を持つテーブルのみを削除したいということです)
c# - .NET - アレイ作成時の GC 競合の削減
配列の大量のコピーを処理するコードがいくつかあります。基本的に、私のクラスはバッキング フィールドとして配列を使用するコレクションであり、既存のコレクションを変更するリスクを冒したくないため、ほとんどの操作では、コレクションを変更する前にコレクションのコピーを作成する必要があるため、バッキング配列もコピーします。
許容範囲内でコピーが遅くなることがあることに気付きましたが、アプリケーションがスケールアップされてより多くのデータを使用し始めたときに問題になるのではないかと心配しています。
一部のパフォーマンス分析テストでは、CPU リソースをほとんど消費していないにもかかわらず、アレイ コピー コードが多くの時間をブロックされていることが示唆されています。競合はほとんどありませんが、多くの時間がブロックされています。テスト アプリケーションはシングル スレッドであるため、GC 競合マジックが発生していると思います。これらのシナリオで GC がどのように機能するかについて十分な自信がないので、ここで質問しています。
私の質問 - GC の負担を軽減する新しいアレイを作成する方法はありますか? または、これを高速化できる他の方法があります(テストと読みやすさのために簡略化されています):
fork - fork() 後の同じファイル記述子
fork() を呼び出した後にファイル記述子を複製することの意味と、それが競合に及ぼす可能性のある影響を理解しようとしています。
「The Linux Programming Interface」24.2.1 (p517):
fork() が実行されると、子は親のすべてのファイル記述子の複製を受け取ります。これらの複製は dup() の方法で作成されます。これは、親と子の対応する記述子が同じオープン ファイル記述を参照することを意味します。
この同じコードを実行すると:
両方のプロセスで同じファイル記述子 (番号?) を取得します: ffd=3 と cfd=3。しかし、dup() を使用してこのコードを実行すると:
ffd=3 と cfd=4 という異なるファイル記述子を取得します。
次に、次の質問があります。
- fork() が親のファイル記述子のコピーを作成するのはどういう意味ですか?
- 2 つのプロセス (父と子) が同じファイル記述子に対して fstat() のような操作を同時に実行すると、競合は発生しますか?
- また、2 つの異なるファイル記述子が同じファイルを指している状態で同時に fstat() を実行する 2 つのプロセスについてはどうでしょうか。
java - Java - DB をポーリングするマルチ プロセスでの競合を回避するためのベスト プラクティス
60 秒ごとにジョブをロードするアプリケーションがあります。ジョブはデータベース (NoSQL) 内のテーブルをポーリングし、新しい行が存在する場合、DB 内で何らかの処理を開始します。
ここで、SPOF を回避するために、アプリケーションの別のインスタンスをロードし、表示レコードに対する競合を回避したいと考えています。
DB をポーリングする複数のプロセス間の競合を回避するためのベスト プラクティスは何ですか?
(既知/推奨のFWはありますか)
c# - タイプ 'System.IO.IOException' の例外が mscorlib.dll で発生しました - 別のプロセスによって使用されているため、プロセスはファイルにアクセスできません
SOにはおそらくこのような質問がたくさんありますが、どれも私の問題を解決できませんでした。プログラムでテキスト ファイルを作成し、次のコードを使用してテキストを入力しています。
各ピクセルの値をテキスト ファイルに書き込みたい。いくつかの値で機能し、突然上記の例外のスローを停止します。
さらに、ファイルのセキュリティ プロパティをチェックし、ファイルを完全に制御できることを確認しました。私はそれを理解することができません。
これを修正するための提案は本当にありがたいです
javascript - 複数の PhantomJS インスタンスがハングしている
Ubuntu 14 で PhantomJS の複数のインスタンスを実行すると問題が発生します。数分後、プロセスが応答しなくなります。
簡単な背景: PhantomJS 2.0 を使用して Web ページをレンダリングし、最終的には Wkhtmtopdf を使用して PDF として保存します。PhantomJS は、ページの読み込み、ajax リクエストの作成、および PDF がサーバーに保存された後の応答の待機のみを担当します。PDF自体は生成されません。PDF に生成する必要がある Web ページは数百あるので、システムが許す限り多くの PhantomJS インスタンスを並行して実行したいと考えています。
各 PhantomJS プロセスは、次のようなシェル スクリプトによって開始されます。
{path to phantomjs} {path to js file} --data {some argument} >> {path to log file} 2>&1 &
この問題は、PhantomJS プロセスからの出力が得られなくなった数分後に発生し、top何もしていないだけであることがわかります。JS スクリプトにはタイマーがあり、1 分以上かかる場合はページの読み込みを再試行し、ページを読み込めphantom.exit()ない場合や PDF の生成に失敗した場合は最終的に呼び出します。したがって、何か問題が発生した場合でも、プロセスは終了するはずですが、終了しません。
並列実行する PhantomJS インスタンスの数を変更してみました。20 -> 10 -> 5 -> 3 を試してみましたが、問題ないようです。一度に 20 個のインスタンスを維持すると、実際にはさらに多くのジョブを正常に実行できます。
で実行すると--debug=true、ある時点でスタックすることがわかります
[DEBUG] WebPage - updateLoadingProgress:
また、出力を確認すると、これらの警告がいくつか表示
されます。[WARNING] QIODevice::write: device not open
これは、それが問題の原因であると私に信じさせます。
ファイル リソースに何らかの競合があるのではないかと考えたので、出力をログ ファイルにリダイレクトせず、 も使用せずに試しました--local-storage-pathが、役に立ちませんでした。
補足として、私は数年間 PhantomJS を使用しており、同じ手順を順番に実行しています (一度に 1 つの PhantomJS プロセスを実行します)。克服すべき障害がいくつかありましたが、うまく機能しました。
これの原因は何ですか?同様の問題に直面した人はいますか?複数の PhantomJS インスタンスを並行して実行するためのアドバイスはありますか?
ありがとう!
sql - 「クライアントからの SQL*Net メッセージ」イベントで待機している強制終了できない Oracle セッション
Oracle 11gR2 で、「クライアントからの SQL*Net メッセージ」イベントでMERGEハングするブロックされた (しかしアイドル状態の!) ステートメントを含む非常に興味深い状況に最近遭遇しました。カーソル: ピン S は X"イベントで待機します。Oracle Enterprise Manager では、次のことが確認できます。MERGE
上記のセッション ID 1204 は次のいずれでも強制終了できないため、この状況はさらに深刻になります。
DBA はオペレーティング システムのプロセスを強制終了できる場合もありますが、多くの場合、データベース全体を再起動する必要があります。幸いなことに、これまでのところ、テスト システム上でのみ使用されており、運用環境では使用されていません。
ノート:
これはおそらく、このかなり漠然とした質問で報告されているのと同様の問題であることを認識しています: Oracle の更新/挿入がスタックし、DB CPU が 100% で、同時実行性が高く、クライアントからの SQL*Net 待機メッセージ。回答として報告する明確な再現パスがあるので、もう一度報告します。
python - Google App Engine での競合の問題
Google App Engine で競合の問題が発生しており、何が起こっているのかを理解しようとしています。
次の注釈が付けられたリクエストハンドラーがあります。
..そしてそのコードでは、いくつかのものをフェッチし、他のものを更新します。しかし、リクエスト中に次のようなエラーがログに記録されることがあります。
..スタック トレースが続きます。必要に応じてスタック トレース全体を更新できますが、少し長くなります。
なぜこれが起こるのかわかりません。私のコードの行を見ると、例外が発生get_by_idし、まったく別のエンティティ (Round) で実行されます。エラー メッセージに記載されている名前「hannes2」の「PlayerGameStates」はget_async、数行前にデータベースから :ed された別のエンティティ GameState の親です。
奇妙な (?) ことは、そのエンティティに対して発生するデータストアへの書き込みがないことです。私の理解では、同じエンティティが同時に並行して更新されると、競合エラーが発生する可能性があります..または、短期間に書き込みが多すぎる場合..
しかし、エンティティも読み取るときに発生する可能性はありますか? (「サスペンド ジェネレーター get..」??) そして、これは ndb.transaction の 5 回の再試行後に発生していますか..? ログには、再試行が行われたことを示すものは何も表示されません。
どんな助けでも大歓迎です。
mysql - MySQL 5.6 セマフォ競合 row0purge.cc dict0dict.cc
サーバーの詳細
- MySQL 5.6.22
- 256GBのRAM
- 4TB SSD
- 32コア
背景情報
1 秒あたり約 3 回の削除を行う削除プロセスがあります。1 秒あたり 2 ~ 3,000 QPS。主に SELECT です。長時間実行されるクエリはありません。
問題
ミリ秒ではなく、1 ~ 3 秒の範囲でクエリの実行が開始されることがあります。それらのほとんどは、「クエリキャッシュロックの待機中」です。
質問
何が原因なのか気になります。DELETE プロセスが進行中であるため、一貫性があるかどうかは理解できますが、非常に散発的です。dict0dict.cc と row0purge.cc に関連するセマフォは、競合を引き起こしている DELETES に関連していると思わせます。これについての考えは素晴らしいでしょう。
