[Thread Prev][Thread Next][Index]

[las_users] Problems with large number of open files at Opendap/THREDDS (including possible solution)



Hi all,

with a ferret script accessing LAS data via Opendap urls, I discovered a 
problem, if a loop reads many datapoints. The error is: "Too many open files" 
and the Tomcat Server stops. Below some lines of the catalina.out file:

> Apr 9, 2009 12:32:35 PM org.apache.tomcat.util.net.PoolTcpEndpoint
> acceptSocket SEVERE: Endpoint
> ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080] ignored exception:
> java.net.SocketException: Too many open files java.net.SocketException: Too
> many open files
>         at java.net.PlainSocketImpl.socketAccept(Native Method)
>         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>         at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>         at java.net.ServerSocket.accept(ServerSocket.java:421)
>         at
> org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultS
>erverSocketFactory.java:61) at
> org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.jav
>a:408) at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW
>orkerThread.java:71) at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja
>va:689) at java.lang.Thread.run(Thread.java:619)
> Apr 9, 2009 12:32:35 PM org.apache.tomcat.util.net.PoolTcpEndpoint
> acceptSocket WARNING: Reinitializing ServerSocket
> Apr 9, 2009 12:32:37 PM org.apache.tomcat.util.net.PoolTcpEndpoint
> acceptSocket SEVERE: Endpoint
> ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080] ignored exception:
> java.net.SocketException: Too many open files java.net.SocketException: Too
> many open files
>         at java.net.PlainSocketImpl.socketAccept(Native Method)
>         at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
>         at java.net.ServerSocket.implAccept(ServerSocket.java:453)
>         at java.net.ServerSocket.accept(ServerSocket.java:421)
>         at
> org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultS
>erverSocketFactory.java:61) at
> org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.jav
>a:408) at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerW
>orkerThread.java:71) at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja
>va:689) at java.lang.Thread.run(Thread.java:619)
> Apr 9, 2009 12:32:37 PM org.apache.tomcat.util.net.PoolTcpEndpoint
> acceptSocket WARNING: Reinitializing ServerSocket

Possible solution:

Edit the FerretIOServiceProvider.java file at: 
$LASDIR/JavaSource/gov/noaa/pmel/tmap/iosp/, so that opend files will be 
closed.
I added a variable

> private RandomAccessFile raf;

to the public FerretIOServiceProvider class and changed close() and 
open(RandomAccessFile raf, NetcdfFile ncfile, CancelTask cancelTask):

>     public void close() throws IOException {
>         // TODO Auto-generated method stub
>         raf.close();                                // NEW !!
>     }

>     public void open(RandomAccessFile raf, NetcdfFile ncfile,
>             CancelTask cancelTask) throws IOException {
>         log.debug("Opening " + raf.getLocation());
>         this.raf = raf;                             // NEW !!
>         raf.seek(0);
>         StringReader sr;
>         try {
>             byte[] b = new byte[(int)raf.length()];
>             raf.read(b);
>             sr = new StringReader(new String(b));
>         } catch (IOException e) {
>             log.debug("IO Exception reading the random access file.");
>             throw e;
>         }
> [...]

Best regards,
Bastian

-- 
---------------------------------------------------------------
Bastian Kern
Max Planck Institute for Chemistry
> Joh.-J. Becher Weg 27
Joh.-J. Becher Weg 27
55128 Mainz                              phone:++49-6131-305452
Germany                          mailto:bkern@xxxxxxxxxxxxxxxxx
---------------------------------------------------------------


[Thread Prev][Thread Next][Index]


Contact Us
Dept of Commerce / NOAA / OAR / PMEL / TMAP

Privacy Policy | Disclaimer | Accessibility Statement