皆様初めまして。
小原と申します。
java.net.SocketExceptionが発生してサーバーが停止する問題について、
皆様のお知恵を拝借したく投稿しました。
現在2つのアプリケーションが稼働しており、
2.0.1の頃に作ったものと2.0.4で作ったものがあります。
どちらもmysqlを利用しています。
これらのアプリケーションは最初は正常に稼働しますが、
アクセス数にもよりますが一定時間が経つと例外が発生してしまいます。
2.0.4のアプリケーションは平均28時間、
2.0.1のアプリケーションは平均18時間で例外が発生して停止します。
例外はどちらも同じ内容です。
例外が発生しているソースの行数は表示されていないため、
私のコードの悪いところを特定することが難しい状況です。
今は原因を特定できないので、例外が発生する前に毎日RUNNING_PIDを見てkillして再startしています。
この現象を解決する手がかりになりうる情報をお持ちの方、是非ご教授ください。
長文、乱文になってしまい申し訳ございません。何卒よろしくお願いいたします。
以下、環境です。
play!
play 2.0.4
mysqlDriver
5.1.21
CentOS 64bit
CentOS release 6.3 (Final)
Java
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
Kernel
Linux henagon 2.6.32-279.2.1.el6.x86_64 #1 SMP Fri Jul 20 01:55:29 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
mysql
mysql Ver 14.14 Distrib 5.1.61, for redhat-linux-gnu (x86_64) using readline 5.1
以下、例外の内容です。
2012-11-18 14:14:52,756 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 10. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:53,757 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 9. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:54,760 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 8. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:55,761 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 7. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:56,763 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 6. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:57,764 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 5. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:58,765 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 4. Exception: java.net.SocketException: Too many open files
2012-11-18 14:14:59,767 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 3. Exception: java.net.SocketException: Too many open files
2012-11-18 14:15:00,768 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 2. Exception: java.net.SocketException: Too many open files
2012-11-18 14:15:01,771 - [ERROR] - from com.jolbox.bonecp.hooks.AbstractConnectionHook in BoneCP-pool-watch-thread
Failed to acquire connection Sleeping for 1000ms and trying again. Attempts left: 1. Exception: java.net.SocketException: Too many open files
2012-11-18 14:15:02,771 - [ERROR] - from com.jolbox.bonecp.ConnectionHandle in BoneCP-pool-watch-thread
Database access problem. Killing off all remaining connections in the connection pool. SQL State = 08S01
2012-11-18 14:15:02,772 - [ERROR] - from com.jolbox.bonecp.PoolWatchThread in BoneCP-pool-watch-thread
Error in trying to obtain a connection. Retrying in 1000ms
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor36.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) ~[na:1.6.0_33]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) ~[na:1.6.0_33]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2393) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) ~[mysql-connector-java-5.1.21.jar:na]
at sun.reflect.GeneratedConstructorAccessor11.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) ~[na:1.6.0_33]
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) ~[na:1.6.0_33]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334) ~[mysql-connector-java-5.1.21.jar:na]
at java.sql.DriverManager.getConnection(DriverManager.java:582) ~[na:1.6.0_33]
at java.sql.DriverManager.getConnection(DriverManager.java:185) ~[na:1.6.0_33]
at com.jolbox.bonecp.BoneCP.obtainRawInternalConnection(BoneCP.java:256) ~[bonecp.jar:0.7.1.RELEASE]
at com.jolbox.bonecp.ConnectionHandle.obtainInternalConnection(ConnectionHandle.java:211) ~[bonecp.jar:0.7.1.RELEASE]
at com.jolbox.bonecp.ConnectionHandle.<init>(ConnectionHandle.java:170) ~[bonecp.jar:0.7.1.RELEASE]
at com.jolbox.bonecp.PoolWatchThread.fillConnections(PoolWatchThread.java:101) [bonecp.jar:0.7.1.RELEASE]
at com.jolbox.bonecp.PoolWatchThread.run(PoolWatchThread.java:82) [bonecp.jar:0.7.1.RELEASE]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_33]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_33]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_33]
Caused by: java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Socket.java:397) ~[na:1.6.0_33]
at java.net.Socket.<init>(Socket.java:371) ~[na:1.6.0_33]
at java.net.Socket.<init>(Socket.java:218) ~[na:1.6.0_33]
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:257) ~[mysql-connector-java-5.1.21.jar:na]
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300) ~[mysql-connector-java-5.1.21.jar:na]
... 21 common frames omitted
--
このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/play_ja/-/Zn5_NQHPgjIJ にアクセスしてください。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+u...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
小原と申します。
現在、インスタンスが適切にGCされていないことを疑い、VisualVMをPlayに接続することを試みていますが、うまくいきません。
http://t.co/No8mG1Ct このURLの通り依存性を追加しrunしましたがVisualVMに表示されません。PlayがVisualVMから参照できるようにするために、どんなコマンドをPlayコンソールに入力すればよいのでしょうか。
何卒ご教授ください。
よろしくお願い申し上げます。
--
このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/play_ja/-/MukC48xdZuEJ にアクセスしてください。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+u...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
cocoatomo です.私の環境では素の Play Java project を作成し, project/Build.scala の "addDependencies" に"com.yammer.metrics" % "metrics-core" % "2.1.2" を追記. play run コマンドで起動したら, VisualVM で見れました.環境は Mac OS X (10.8), Java 1.6.0_37, sbt 0.12.1, play 2.0.4 ですね.どんな環境で作業されていますか?まずは素の Play Java アプリを作って, それに VisualVM を接続してみてはどうでしょう?
2012/11/28 Sho Kohara <ion...@gmail.com>
皆様こんばんは
小原と申します。
現在、インスタンスが適切にGCされていないことを疑い、VisualVMをPlayに接続することを試みていますが、うまくいきません。
http://t.co/No8mG1Ct このURLの通り依存性を追加しrunしましたがVisualVMに表示されません。PlayがVisualVMから参照できるようにするために、どんなコマンドをPlayコンソールに入力すればよいのでしょうか。
何卒ご教授ください。
よろしくお願い申し上げます。
このディスカッションをウェブ上で閲覧するには、https://groups.google.com/d/msg/play_ja/-/MukC48xdZuEJ にアクセスしてください。
--
このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
2012/11/28 Sho Kohara <ion...@gmail.com>
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
--email_address = 'cocoa...@gmail.com'
class Cocoatomo:
name = 'cocoatomo'
twitter_id = '@cocoatomo'
--
このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
2012/11/28 Sho Kohara <ion...@gmail.com>
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
--email_address = 'cocoa...@gmail.com'
class Cocoatomo:
name = 'cocoatomo'
twitter_id = '@cocoatomo'
--
このメールは Google グループのグループ「日本Playframeworkユーザー会」の登録者に送られています。
このグループに投稿するには、pla...@googlegroups.com にメールを送信してください。
このグループから退会するには、play_ja+unsub...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/play_ja?hl=ja からこのグループにアクセスしてください。
--
Takashi Kawachi
tkawachi at gmail.com