I should add we are connecting via the JDBC driver, version 1.7, using the driver jar downloaded from the MonetDB site. On Thursday 17 April 2008 16:41:18 McKennirey.Matthew wrote:
Environment
MSG BUSINESS[7403]: # MonetDB server v5.4.1, based on kernel v1.22.1 MSG BUSINESS[7403]: # Serving database 'BUSINESS' MSG BUSINESS[7403]: # Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked
During the course of software development using MonetDB for our application database, after running for a week or ten days without incident, the merovingian daemon will suddenly stop accepting connections.
The merovingian log shows
MSG merovingian[19349]: database 'BUSINESS' already running since 2008-04-11 14:42:27, up min/avg/max: 0/0/0, crash average: 0.00 0.00 0.00 (1-0=0) MSG merovingian[19349]: redirecting client 192.168.1.1:29378 for database 'BUSINESS' to mapi:monetdb://dev04:50001/ ERR merovingian[19349]: client error: could not retrieve uplog information: IOException:sabaoth.getUplogInfo:unable to open file /monetdb/var/MonetDB5/dbfarm/BUSINESS/.uplog: Too many open files ERR merovingian[19349]: client error: IOException:sabaoth.getStatus:unable to open directory /monetdb/var/MonetDB5/dbfarm: Too many open files
# examine the .uplog file ? dev04:/monetdb/var/MonetDB5/dbfarm/BUSINESS # cat .uplog 1207290718 1207844298 1207844305 1207846979 1207846986 1208461825 1208461935 1208463257 1208463466
There is lots of space on the disk.
/monetdb status shows the database is up and running
netstat shows the daemon and databases listening on their ports
Although it is not possible to connect to the database via the daemon, we can connect using mclient,
# connect locally using mclient /mclient -dBUSINESS -umonetdb -Pmonetdb -lsql sql>
And we can run, via mclient, the same sort of queries that were being run when the daemon stopped accepting connections. It is difficult to determine the exact query that was run as the application is generating lots of different queries frequently.
And we can connect to the database from other clients on the network by connecting directly to the database, bypassing the daemon (which is what we are doing for now)