問題タブ [spring-scheduled]
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.
spring - スプリング ブートのスケジュールされたタスクがハングする
しばらく @Scheduled でスプリング ブートを使用していましたが、最近、次のように危険な潜在的な脅威があることがわかりました。これは、「kill -3」によってスレッド スタック トレースに表示されます。この問題につながる可能性のあるものをすべてクリアするために、完全にダミーのタスクを作成します。
これは私のログです:
20151102 11:54:50.660 | 情報 | プール-3-スレッド-2 | ---------------[26] | TestJob.test(TestJob.java:19) 20151102 11:55:50.662 | 情報 | プール-3-スレッド-4 | ---------------[28] | TestJob.test(TestJob.java:19) 20151102 11:56:50.664 | 情報 | プール-3-スレッド-5 | ---------------[33] | TestJob.test(TestJob.java:19) 20151102 11:57:50.666 | 情報 | プール-3-スレッド-6 | ---------------[37] | TestJob.test(TestJob.java:19)
スレッドスタックトレース:
"pool-3-thread-2" #26 prio=5 os_prio=0 tid=0x00007fbea0cd9800 nid=0x74f2 条件 [0x00007fbf0d3d2000] で待機中 java.lang.Thread.State: sun.misc.Unsafe.park で待機中 (パーキング)( Native Method) - java.util.concurrent で <0x0000000763ed3710> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) を待機するパーキング (java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) で) .locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) で java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) で java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkcutor.take(ScheduledThreadPool.java :809) java.util.concurrent.ThreadPoolExecutor で。getTask(ThreadPoolExecutor.java:1067) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で java.lang.Thread .run(Thread.java:745)
"pool-3-thread-4" #28 prio=5 os_prio=0 tid=0x00007fbea0783800 nid=0x74f4 条件 [0x00007fbf0d1d0000] で待機中Native Method) - java.util.concurrent で <0x0000000763ed3710> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) を待機するパーキング (java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) で) .locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) で java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088) で java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkcutor.take(ScheduledThreadPool.java :809) java.util.concurrent.ThreadPoolExecutor で。getTask(ThreadPoolExecutor.java:1067) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) で java.lang.Thread .run(Thread.java:745)
スケジュールされたjavadocは言う
@Scheduled アノテーションの処理は、ScheduledAnnotationBeanPostProcessor を登録することで実行されます。
私はこのクラスに自分で名前を付けていません。
この問題を解決する方法を知っている人はいますか?
Eclipse デバッグ画面キャプチャの写真を添付しました。プールが増加し、すべての古いスレッドが実行されています...私の質問が明確になることを願っています。
更新: 今回はうまくいったと思います。Spring Boot スケジューラのデフォルトのプール サイズは 100 で、すべてのスレッドが実行中の状態です。私は本当にそれを理解していません。何を実行していますか?何かを待つべきだと思いますが、なぜですか?アノテーションを使用してSpring Bootのスケジュールされたプールサイズを設定する方法を知っている人はいますか? 私は自分のアプリケーションで xml を使用しておらず、スケジューラーのためだけに導入するつもりはありません。
java - 3:00 から 6:30 の間の春にスケジュールされた cron
3:00 から 6:30 の間、5 分ごとにジョブをスケジュールしたいと考えています。
これは、私のジョブを 3:00 から 5:55 の間で 5 分ごとにスケジュールします。
@scheduled
しかし、最後の 35 分間を含めるにはどうすればよいでしょうか。
java - クォーツ、スプリング スケジューラー、スプリング クォーツ スケジューラーの同期
@DisallowConcurrentExecutionアノテーションを使用してクォーツでこれを実装すると、メソッドはシリアル化され、 org.quartz.threadPool.threadCountプロパティを 1 に設定すると、同期のスレッドが 1 つだけ作成されます。
スプリング スケジューラとスプリング クォーツ スケジューラを使用して同期ジョブを作成する方法を知りたいです。
java - ラズベリー PI 2 Java 8 JVM エラー
私は、Java 1.8、Spring、Hibernate、MySQL に基づいて Web アプリを構築し、Tomcat を Web サーバーとして使用しています。現在、私のアプリは次のようなラズベリーのシステムデータをログに記録しています(@ 5秒間隔)。CPU 温度、CPU コア電圧、使用メモリ、空きメモリ、メモリ バッファなど。
まず、Tomcat では、Tomcat のスタートアップ サービスに次の行がありました。
tomcatを起動してから約8時間でクラッシュしました。これらの行を削除したところ、メモリが不足しているため、約 2 日でクラッシュしています。今日、スクリプトを開始する際にこれらの行なしでクラッシュしたのは初めてで、db に挿入された最後の行は次のとおりです。
この情報については、pi4j ライブラリの SystemInfo クラスを使用しています。getMemoryUsed() は使用済みメモリをビット単位で返しているため、簡単な計算の後、913.92 Mb の使用済みメモリが得られます。
アプリの起動時に 250 Mb の RAM しか消費せず、ラズベリー パイの最大メモリに達しているため、3 日後にアプリがクラッシュします。
春のアプリ構成:
スケジューラ クラス:
ベースレポ:
現在、ログにエラーは見つかりませんが、過去に SIGILL エラーでクラッシュしました。ログを見つけたら、この投稿を編集します。
JVM からのエラーのあるログを見つけました:
そして、私は非常に奇妙な行動を見つけました。コメントからのアドバイスに従った後、Tomcat 開始スクリプトに次の行を追加しました。
Java Mission Control と Flight Recording をラズベリーの JVM に接続しました。奇妙なことに、JVM は 12 時間の監視後もクラッシュせず、すべて正常に機能していました。「XX:+UnlockCommercialFeatures -XX:+FlightRecorder」および「-Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote」でサーバーを再起動した後.ssl=false" removerd、JVM は 7 時間後にクラッシュしました。
また、Mission Control と Flight Recording が JVM に接続されているため、コミット済みヒープが常に増加しているが、減少していないことにも気付きました。
java - @Scheduled サーバーの起動時に呼び出される
プロジェクトではJBoss Appサーバー7.0.0、Spring 4.1.6、Hibernate-JPA 2.0を使用しています。プロパティで指定された設定間隔でデータを保持したい。このために私は春のスケジューリングを使用しています@Scheduled(fixedRateString = "${db.commit.interval}")
が、public void commitToDB()
私が直面している1つの問題は、このメソッドがサーバーの起動時に自動的に呼び出されることです。つまり、このメソッドが5分ごとに呼び出されるようにスケジュールした場合、12:00:00にサーバーが起動した後、このメソッドが12:00:05 に呼び出される必要がありますが、12:00:00 にのみ呼び出されます (つまり、サーバーの起動時)。それが問題なのか、それとも何か不足しているのかを誰かが示唆できますか?
spring - プロパティファイルからのSpring @Scheduled cronの詳細 - 例外
春の @Scheduled メソッドでcronの詳細を定義しようとしていました
そして、私のapplication.propertiesで
@Scheduled とともに cron の詳細を定義すると、問題なく実行されます。しかし、これを行うと、プロパティ ファイルから値を読み取ることができず、以下のエラーがスローされます。
何か提案はありますか?