2012-02-06 10 views
3

次はスタックトレースです。私は壊れたパイプが8時間の非閉鎖の接続と接続が自動的に閉じるのためにあることを読む。私はこれを見たhttp://itellity.wordpress.com/2011/05/18/getting-rid-of-socketexception-broken-pipe-with-quartz-and-mysql-on-jboss/。私は私のローカルマシンで再現できませんでした。java.net.SocketException:QuartzとMySQLとTomcat(Tomcatクラッシュ)で破損したパイプ

  1. 私のローカルマシンでこれを再現できる方法はありますか?
  2. これはトマクトクラッシュですか?私は石英瓶1.6.5と風袋6.0.18の非常に古いバージョンを使用しています。それが問題になるでしょう。

私はこの問題を解決するのに役立ちます。

[Scheduler_QuartzSchedulerThread] WARN org.quartz.impl.jdbcjobstore.JobStoreTX - Failed to override connection auto commit/transaction isolation. 
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5442) 
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.setAutoCommit(AttributeRestoringConnectionInvocationHandler.java:91) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:65) 
    at $Proxy4.setAutoCommit(Unknown Source) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:711) 
    at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:72) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3757) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 


** END NESTED EXCEPTION ** 



Last packet sent to the server was 1 ms ago. 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2759) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5442) 
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.setAutoCommit(AttributeRestoringConnectionInvocationHandler.java:91) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:65) 
    at $Proxy4.setAutoCommit(Unknown Source) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.getConnection(JobStoreSupport.java:711) 
    at org.quartz.impl.jdbcjobstore.JobStoreTX.getNonManagedTXConnection(JobStoreTX.java:72) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3757) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 
[Scheduler_QuartzSchedulerThread] WARN org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler - Failed restore connection's original auto commit setting. 
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5442) 
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.restoreOriginalAtributes(AttributeRestoringConnectionInvocationHandler.java:134) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanupConnection(JobStoreSupport.java:3551) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3774) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 


** END NESTED EXCEPTION ** 



Last packet sent to the server was 0 ms ago. 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2759) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:5442) 
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:237) 
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.restoreOriginalAtributes(AttributeRestoringConnectionInvocationHandler.java:134) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanupConnection(JobStoreSupport.java:3551) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3774) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 
[Scheduler_QuartzSchedulerThread] ERROR org.quartz.core.ErrorLogger - An error occured while scanning for the next trigger to fire. 
org.quartz.JobPersistenceException: Couldn't acquire next trigger: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3206) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1447) 
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:177) 
    at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggerToAcquire(StdJDBCDelegate.java:2924) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2747) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport$36.execute(JobStoreSupport.java:2733) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3760) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 


** END NESTED EXCEPTION ** 



Last packet sent to the server was 1 ms ago. [See nested exception: com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.SocketException 
MESSAGE: Broken pipe 

STACKTRACE: 

java.net.SocketException: Broken pipe 
    at java.net.SocketOutputStream.socketWrite0(Native Method) 
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92) 
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136) 
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65) 
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123) 
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:2744) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1612) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3206) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1447) 
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:177) 
    at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectTriggerToAcquire(StdJDBCDelegate.java:2924) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2747) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport$36.execute(JobStoreSupport.java:2733) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3760) 
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobStoreSupport.java:2729) 
    at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:266) 


** END NESTED EXCEPTION ** 

EDIT: 私は水晶の特性上

org.quartz.dataSource.QUARTZ_NO_TX.validateOnCheckout = true 
org.quartz.dataSource.QUARTZ_NO_TX.validationQuery = select 1 

を使用していますまた、

autoreconnect=true 

私はMySQLのプロパティを変更することでこれを再現することができますどのような方法があります。私はこれを私のサーバー上でのみ得ています。

+0

あなたは、提供されたリンクの詳細から解決できないと言います。何を試してみましたか?また、その8時間を受け入れるために一晩走らせてみませんか? – aldrin

+0

あなたの素早い対応のためにありがとうaldrin。私が試したことを編集しました。 8時間ではなく4時間から5時間の間に数時間放置してみましたが、まだこのエラーは発生していません。これがTomcatサーバーをクラッシュさせる可能性はありますか? –

+0

これらの2つの文を追加すると、最初はエラーが発生していました。だから私は働かないと言いました。今私はそれを修正しました..私はサーバーをテストして8時間試してみましょう..あなたの返信をありがとう.. –

答えて

4

は、私はそれが8時間後に削除されMySQL stale connectionに関連していると信じています。

EDIT

this記事を読みます。

次のセットを持っていることを確認します(正確な属性の名前がわからないが、彼らは下記のようになります) を 『1を選択』

  1. testWhileIdle =真
  2. validationQuery =
  3. minEvictableIdleTimeMillis = 1800000
  4. timeBetweenEvictionRunsMillis = 1800000
  5. numTestsPerEvictionRun = 3
+0

お返事いただきありがとうございます。問題は、石英スケジューラでこれを避ける方法です。 –

+0

@Dilip Rajkumar、アプリケーションサーバーのDataSourceを適切に設定する必要があります。私の編集を参照してください。 – aviad

+0

はいaviad、私はorg.quartz.dataSource.myDS.validateOnCheckoutにしようとしています=真 org.quartz.dataSource.myDS.validationQuery =私は私がテストした後、あなたが知っているだろう1を選択します。おかげでaviad。 –