問題タブ [blocked-threads]
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.
asynchronous - ブロックされたスレッドの検出
私は非同期アプリケーション (私は CCR を使用しています) のトラブルシューティングに関する理論を持っていますが、誰かが私の論理を確認できるかどうか疑問に思っています。
デフォルト数のスレッド (つまり、コアごとに 1 つ) を使用する CCR ベースのマルチスレッド アプリケーションが、指定された 2 倍のスレッドを使用する同じアプリケーションより遅い場合、コードのどこかでスレッドがブロックされていることを意味しますか?
どう思いますか?これは、スレッドが誤ってブロックされているかどうかを検出するための迅速かつ有効な方法ですか?
delphi - Delphi - ブロックされたスレッドを終了する
重複の可能性:
長時間実行されているスレッドを適切に停止する方法は?
こんにちは。
操作を実行する必要があるバックグラウンド スレッドがありますが、リソースが破損している場合を除いて、常に正常に動作します。その場合、スレッドは Execute メソッドの Load (そのリソースへの) 呼び出しでブロックされます。
その場合、スレッドは Terminate メソッド (メイン スレッドからの呼び出し) に応答せず、ブロックされます。
だから、私の質問は次のとおりです。ブロックされたスレッドを(メインスレッドから)適切に終了する方法。いいえ、リソースをロードするクラスを変更することも、リソースが破損しているかどうかを以前から知ることもできません。
java - ArrayBlockingQueue の使用中に Java ThreadPoolExecutor がスタックする
私はいくつかのアプリケーションに取り組んでおり、さまざまなタスクを処理するために ThreadPoolExecutor を使用しています。ThreadPoolExecutor は、しばらくするとスタックします。より単純な環境でこれをシミュレートするために、問題をシミュレートできる単純なコードを作成しました。
このコードを数回実行してみてください。通常、コンソールに番号が出力され、すべてのスレッドが終了すると、番号が存在します。しかし、時々、すべてのタスクを終了してから終了しないことがあります。スレッド ダンプは次のとおりです。
私の実際のアプリケーションでは、ThreadPoolExecutor スレッドがこの状態になり、応答を停止します。
よろしく、ラビ・ラオ
java - PipedOutputStream がデッドロックするのはなぜですか?
PipedInputStream と PipedOutputStream を使用してスレッド化された循環バッファーを実装しようとしていますが、Decoder ランナブルで mHead.write に到達すると毎回ロックされます。別のスレッドを使用すると、デッドロックが発生する可能性はないと思いました。
編集:これが私のサービスの完全なソースですhttp://pastie.org/1179792
logcat が出力します:
読んで
みる 書いてみる
performance - UnInvertedField.getUnInvertedField()およびSegmentReader$CoreReaders.getTermsReaderの複数のブロックされたスレッド
Solr1.3からSolr1.4.1にアップグレードしています。Solr 1.3を使用しているときに、「org.apache.lucene.store.FSDirectory $ FSIndexInput.readInternal()」で複数のブロッキングアクティブスレッドが表示されていました。
NIOの利点を活用するために、Solr 1.4.1にアップグレードすると、「org.apache.solr.request.UnInvertedField.getUnInvertedField()&」に他のタイプの複数のブロッキングスレッドが表示されます。
SegmentReader $ CoreReaders.getTermsReader "。このため、QTimesは数百から数千ミリ秒まで急上昇します。1回のクエリで最大30〜40秒になります。
- 複数のブロッキングスレッドは、数千のクエリの後に表示されます。
- 同じフィールドでのファセットとソートはありません。
- ファセットフィールドは複数値のテキストフィールドですが、大きなテキスト値はありません。
- インデックスサイズ-約10GB
- schema.xmlでファセットのメソッドを指定していません。
- フィールド値のキャッシュ設定は次のとおりです。
誰かがこれらのブロックされたスレッドが表示される理由を教えてください。
また、それらがフィールド値キャッシュに関連している場合、サイズ175のキャッシュはごくわずかな初期クエリでいっぱいになり、その直後に複数のブロッキングスレッドが表示されますか?
「facet.method=enum」がある場合、どのような違いがありますか?
これはすべてfieldValueCacheに関連していますか、それともこれらのブロッキングスレッドを回避するために設定する必要がある他の構成がありますか?
ありがとう、
ラチタ
キャッシュ値の例:
facetField1_27443:
{field = facet1_27443、memSize = 4214884、tindexSize = 52、time = 22、phase1 = 15、nTerms = 4、bigTerms = 0、termInstances = 6、uses = 1}
facetField1_70:
{field = facetField1_70、memSize = 4223310、tindexSize = 308、time = 28、phase1 = 21、nTerms = 636、bigTerms = 0、termInstances = 14404、uses = 1}
facetField2:{field = facetField2、memSize = 4262644、tindexSize = 3156、time = 273、phase1 = 267、nTerms = 12188、bigTerms = 0、termInstances = 1255522、uses = 7031}
「org.apache.solr.request.UnInvertedField.getUnInvertedField()-BLOCKED」のスタックトレース
at org.apache.solr.request.UnInvertedField.getUnInvertedField(UnInvertedField.java:837)at org.apache.solr.request.SimpleFacets.getTermCounts(SimpleFacets.java:250)at org.apache.solr.request.SimpleFacets.getFacetFieldCounts (SimpleFacets.java:283)at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:166)at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:72)atorg。 apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195)at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)at org.apache.solr.core.SolrCore.execute( SolrCore.java:1316)at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)atcom.caucho。server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java: 266)com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:270)at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)at com.caucho.util.ThreadPool $ Item .runTasks(ThreadPool.java:721)at com.caucho.util.ThreadPool $ Item.run(ThreadPool.java:643)at java.lang.Thread.run(Thread.java:595)compRequest(HttpRequest.java:270)at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)at com.caucho.util.ThreadPool $ Item.runTasks(ThreadPool.java:721)at com.caucho .util.ThreadPool $ Item.run(ThreadPool.java:643)at java.lang.Thread.run(Thread.java:595)compRequest(HttpRequest.java:270)at com.caucho.server.port.TcpConnection.run(TcpConnection.java:678)at com.caucho.util.ThreadPool $ Item.runTasks(ThreadPool.java:721)at com.caucho .util.ThreadPool $ Item.run(ThreadPool.java:643)at java.lang.Thread.run(Thread.java:595)
org.apache.lucene.index.SegmentReader $ CoreReaders.getTermsReader()-ブロック
org.apache.lucene.index.SegmentReader $ CoreReaders.getTermsReader(SegmentReader.java:170)のorg.apache.lucene.index.SegmentTermDocsにあります。(SegmentTermDocs.java:52)org.apache.lucene.index.SegmentReader.termDocs(SegmentReader.java:987)、org.apache.lucene.index.IndexReader.termDocs(IndexReader.java:1102)、org.apache。 lucene.index.SegmentReader.termDocs(SegmentReader.java:981)at org.apache.solr.search.SolrIndexReader.termDocs(SolrIndexReader.java:320)at org.apache.solr.search.SolrIndexSearcher.getDocSetNC(SolrIndexSearcher.java: 640)org.apache.solr.search.SolrIndexSearcher.getPositiveDocSet(SolrIndexSearcher.java:563)at org.apache.solr.search.SolrIndexSearcher.numDocs(SolrIndexSearcher.java:1422)at com.askme.solrenhancements.facet.ExtendedFacet com.askme.solrenhancementsの.getCustomFacetCount(ExtendedFacet.java:132)。
semaphore - Wait/Signal (セマフォ) 実装の疑似コードはどのように「機能」しますか?
block(thread)
a の実行を停止した場合thread
、どのように、どこで、いつ戻るのでしょうか?
次の割り込みを有効にするスレッドはどれWait()
ですか? thread
呼び出された は、block()
別のスレッドが呼び出されるまで返されるべきではありませんwakeup(thread)
!
- しかし、その他のスレッドはどのように実行されるのでしょうか?
- スレッドの切り替えは正確にどこで行われますか?
java - Java スタック ダンプ - ロック待ち
JSP Web アプリケーションで Java 1.4 を使用していますが、Web アプリケーションが完全に停止することがあります。ユーザーがホームページにアクセスしようとすると、ページが見つかりません。
これが発生した場合、スタック ダンプを実行し、samurai を使用して、同じメッセージで複数のブロックされたスレッドを確認できます。
このスレッドを支えているものを特定するにはどうすればよいですか。これを識別するために使用できるツールはありますか?
ありがとう
こんにちはMprivat、どうもありがとう。これをアーキテクトに持っていき、このアップグレードを実行できるかどうかを確認します. これはたまにしか発生しないため、これが原因であるかどうかを確認するには時間がかかります。時間だけが電話できるので、数か月後にフィードバックします。どうもありがとう
c# - AcceptTcpClient 呼び出しのブロックをキャンセルする
誰もが知っているように、C# で着信 TCP 接続を受け入れる最も簡単な方法は、TcpListener.AcceptTcpClient() をループすることです。さらに、この方法では、接続が取得されるまでコードの実行がブロックされます。これは GUI を非常に制限しているため、別のスレッドまたはタスクで接続をリッスンしたいと考えています。
スレッドにはいくつかの欠点があると言われましたが、それらが何であるかについて誰も説明しませんでした。そのため、スレッドを使用する代わりに、タスクを使用しました。これはうまく機能しますが、AcceptTcpClient メソッドが実行をブロックしているため、タスクのキャンセルを処理する方法が見つかりません。
現在、コードは次のようになっていますが、プログラムに接続のリッスンを停止させたい場合にタスクをキャンセルする方法がわかりません。
まず、タスクで実行される関数:
次に、リッスン サービスを開始および停止する関数:
listenTask.Abort() 呼び出しを置き換える何かが必要なだけです(メソッドが存在しないため、コメントアウトしました)
java - スレッドが待機しているためにマルチスレッドプログラムがブロックされるのを回避する方法
何千ものトランザクションを処理するモジュールがあります。各トランザクションには、通過する複数のフェーズがあります。このモジュールは、マルチスレッド モードで実行されます。作成できるスレッド数の制限 (ハードコーディング) を定義しました (サーバーの使用率に応じて制限されます)。
ここで、スレッドが一定期間 (24 時間以上) 待機する必要がある状況に遭遇しました。スレッドの数が限られているため、すべてのスレッドが 24 時間以上待機している場合、これはアプリケーションを完全にブロックしています。
ここで必要なのは、待機中のスレッドを 24 時間再利用する方法です。スレッドが待機モードになっている場合は、そのスレッドを別のトランザクションに再利用する必要があり、元の待機が終了したら、保留されていた場所から元のトランザクションを再開します。
上記の説明が問題を理解するのに役立つことを願っています。
ssl - Glassfish 2.1.1、Liferay 5.2、SSLで実行されているポータルでは、ブロックされたスレッドが多すぎます
GlassfishでSSLを介して実行され、Liferayを使用するポータルがあります。前回、Glassfishが「ストール」したリリース情報に同時にアクセスするために約200人を招待するメールを送信しました。
サーバーから、システムリソースに問題がないことがわかりました。-Glassfishは最大8GBを使用できますが、5 GBを使用していました-サーバーには4つのCPUがあり、全体の使用率は約30%でした-Glassfishは最大400のHTTPスレッドで構成されています。
サーバーがユーザーに応答していないことを検出するとすぐに、何が起こっているのかを理解するためにプロファイラーを起動しました。
スレッドの概要には、ブロックされたスレッドが多すぎます。
スタックから、太陽、グリズリー、カタリナのクラス以外のコードを確認することはできません。
このような問題を修正したいのですが、今のところ、SSLを無効にするなど、一部のコンポーネントを置き換える必要があるコードで作業する必要があるかどうかを判断できます。
どんな考えでも大歓迎です。
ありがとう。