0

数分後に MySQL 接続が常に失われます。接続を試みるまで、ログにエラーは表示されません。

デバッグに役立つ設定を投稿させていただきます。必要なものをお知らせください。

context.xml:

<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
        initialSize="10" maxActive="50" maxIdle="20" maxWait="60000"
        driverClassName="com.mysql.jdbc.Driver"
        poolPreparedStatements="true"
        username="orbeon"
        password="pw"
        url="jdbc:mysql://localhost:3306/orbeon"/>

my.cnf:

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock


[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]


user = mysql
pid-file  = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
skip-name-resolve

bind-address            = 0.0.0.0


key-buffer            = 256M
thread_stack          = 256K
thread_cache_size     = 8
max_allowed_packet    = 16M
max_connections       = 200
myisam-recover        = BACKUP
wait_timeout          = 180
net_read_timeout      = 30
net_write_timeout     = 30
back_log              = 128
table_cache           = 128
max_heap_table_size   = 32M
lower_case_table_names = 0


query_cache_limit           = 1M
query_cache_size      = 16M



log_error             = /var/log/mysql/error.log

log_slow_queries            = /var/log/mysql/slow.log
long-query-time       = 5
log-queries-not-using-indexes



[mysqldump]
quick
quote-names
max_allowed_packet    = 16M

[mysql]

[isamchk]
key-buffer            = 256M
max_allowed_packet    = 16M

!includedir /etc/mysql/conf.d/
4

2 に答える 2

1

<Resource>既存のfor MySQLに次の 2 つの属性を追加してみてください。これらを使用すると、Tomcat の接続プールは、プールから接続を取得した後も接続が使用可能であることを確認します。

validationQuery="select 1 from dual"
testOnBorrow="true"

したがって、<Resource>次のようになります(もちろん、適切なユーザー名、パスワード、およびサーバーを使用して):

<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource"
    initialSize="3" maxActive="10" maxIdle="20" maxWait="30000"
    driverClassName="com.mysql.jdbc.Driver"
    poolPreparedStatements="true"
    validationQuery="select 1 from dual"
    testOnBorrow="true"
    username="orbeon"
    password="orbeon"
    url="jdbc:mysql://localhost:3306/orbeon?useUnicode=true&amp;characterEncoding=UTF8"/>
于 2013-05-06T18:06:28.897 に答える
1

なぜあなたはあなたのwait_timeoutをそんなに低く設定していますか???

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_wait_timeout

于 2013-05-06T21:45:06.417 に答える