問題タブ [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.
java - Java の println ステートメントでスレッドがブロックされる
単一の物理ホストでアプリケーションの複数のインスタンス (Tomcat サーバーごとに 1 つ) を実行しています。アプリケーションは適切なロギングを行います。最近、一部のアプリケーションが遅くなったりハングしたりし、再起動する必要があることが確認されました。スレッド ダンプでは、ログ ステートメントですべてのスレッドがブロックされ、println
オブジェクトのロックを待機していることがわかります。および他のオブジェクトがすでにロックを取得していますprintln
。しかし、他のスレッドがprintln
オブジェクトのロックを解放しなかった理由がわかりませんでしたか? いくつかのスレッド ダンプ スナップショットを貼り付けます。
ブロックされたスレッド ダンプ:
printlnのログを取ったスレッドのスレッドダンプ。
java - 状態の Jboss スレッドのほとんど = BLOCKED
jboss スレッドのほとんどは BLOCKED 状態にあり、jboss のスレッド数が減ることはありません。
スレッド数を減らす方法と、これらの多くのスレッドが BLOCKED 状態にある理由を理解したい。
450 個のスレッドのうち 380 個が BLOCKED 状態です。
以下を使用して状態を調べました
process - Blocked と Busy Waiting の違いは何ですか?
私は Busy Waiting の実装を知っていました。それは次のような死のループです。
そのため、メソッド「next()」はブロックされているように見えますが、実際には常に実行されています。これは本では「忙しい待機」と呼ばれていました。
「プロセスがブロックされました」とは何ですか?その実装の詳細はどうですか?デスループも?または他のいくつか?信号機構のような?
例: 猫 xxx | grep "abc"
プロセス「cat」はファイルを読み取り、それらを出力します。
「cat」からの入力を待っているプロセス「grep」。
そのため、「cat」がデータを出力する前に、「grep」をブロックし、入力を待って続行する必要があります。この「ブロックされた」ことについての詳細、死のループは常に入力ストリームを読み取りますか? または本当に実行を停止し、実行するためにウェイクアップする信号を待ちますか?
multithreading - スレッドがブロックされていると、プロセスがブロックされますか? なぜ、どのように?
スレッドがブロックされていると、プロセスがブロックされますか? なぜ、どのように?回答してくれたすべての専門家に感謝します。
java - read() のような I/O メソッドは、Java で Thread をどのようにブロック状態にしますか?
したがって、私がこれを正しく理解していれば、スレッドはオブジェクトで待機を呼び出すと待機状態になり、オブジェクトのロックを待機しているときにブロック状態になります(同期ブロックまたはメソッドに入ろうとするときなど) )。
read() のような I/O メソッドはどのようにしてスレッドをブロック状態にしますか? ブロックされた状態で読み取り可能なデータを待機しなければならない理由は理解していますが、その方法にも興味があります。JVM は、読み取ろうとしているリソース内のデータが再び使用可能になったときに、続行できることをスレッドにどのように通知しますか?
mysql - Magento SQLSTATE [HY000]: 一般エラー: 1205 ロック待機タイムアウトを超えました。トランザクションを再開してみてください
最近、大規模な 32Gig データベースのコピーを作成して、開発環境に使用しました。アイテムを作成、削除、更新しようとすると、このエラーが発生します。
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
コピーが正しく行われず、一部のテーブルがロックされているのではないかと考えています。
問題のデータベースはtest_dev2
、私の開発環境で使用されているものです。プロセスを強制終了しようとしましたがtest_dev2
、それでも同じエラーが発生しました。
MySQLサービスも再起動しましたが、それでも同じエラーが発生しました。
innodb_lock_wait_timeout
それから私は120
に増加しました
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 120 |
+--------------------------+-------+
このコマンドを実行すると、次のようになりますSHOW OPEN TABLES WHERE In_use > 0;
+-----------+------------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+-----------+------------------+--------+-------------+
| test_dev2 | core_url_rewrite | 1 | 0 |
+-----------+------------------+--------+-------------+
1205 Lock wait timeout exceeded
このエラーを修正する方法について何かアイデアはありますか?
android - WAIT_BLOCKED スレッド状態は何を意味しますか?
AudioTrack スレッドの lttng トレースを分析していたので、グリッチの時点でスレッドの状態が として表示されWAIT_BLOCKED
ます。誰でもスレッド状態の意味を教えてくださいWAIT_BLOCKED
。これがスクリーンショットです