Skip to main content

Too many open files

Last week tomcat log file report many error about "Too many open files" when it has high traffic. Some in catalina_log say
2007-04-07 16:13:40 HttpProcessor[80][272] Starting background thread
2007-04-07 16:13:40 HttpConnector[80] accept:
java.net.SocketException: Too many open files

and here is from localhost_log
2007-04-07 16:13:40 StandardWrapperValve[myservlet]: Servlet.service() for servlet myservlet threw exception
java.io.FileNotFoundException: /home/log/mylog_070407.log (Too many open files)

This is because too many file descriptors're opened by tomcat. File descriptor can be limited in both system level and shell level.

To check maximum number of fd in system type 'cat /proc/sys/fs/file-max'. In my case it is 65536(someone said it should set to 200000). Tomcat error when try to open socket number 272 so I think 65536 is ok for me for now. Anyway if u want to set it add 'fs.file-max = 200000' to /etc/sysctl.conf
pnix@pnix-a7:~$ cat /proc/sys/fs/file-max
65536


next go check shell level 'ulimit -n' give me 1024. This is reasonable b'coz I have three servlet each need about 3-4 fds per request. So I change this limit by add
* soft nofile 2048
* hard nofile 2048

in file /etc/security/limits.conf

Note:
To get the total number of handles that are used by process xxx
lsof -p xxx|wc -l

Comments

Geekygecko said…
Thanks for the tip. That has fixed my Glassfish issue.

I added large values just to be sure:
* soft nofile 65535
* hard nofile 65535

Great blog, I bookmarked it straight away.
Anonymous said…
Great Blog !!!, Thanks for all
Roloreaper said…
for the settings of
* soft nofile 2048
* hard nofile 2048
to take pleace must the pc be restarted?
pnix said…
rowland, sysctl.conf can reload at runtime with command
sysctl -p
Anonymous said…
thank you
Anonymous said…
Thanks you very much!
Brad Fallon said…
Why can't I get the website "world net daily" on the computer for two hours? Has it been sabotaged?
fico score said…
I am writing a program in Foxpro dos based. Error i am facing is Too Many files are open.config.sys changed.NA
Anonymous said…
Hi,

Many many thanks. Thanks and only thanks. I was struggling last 2 days to solve this problem.

Thanks again.

Binod Suman
Can one erase saved files from rewritable CD using Nero start-smart essentials?
while i am useing my computer too many files open it self and closeing as well why it is happing?
Anyone who can guide me how I can proceed making an operating system or any software( please specify) in Java?
Sandler said…
Hello,

I do have the same kind of issue, But, looking for different type of solution.
I am looking for a script to start weblogic server, once * soft nofile 2048
* hard nofile 2048 is done. with passing the PID for each instance to lsof, weblogic put the pid # in the log directory.Please, help me with the Warper or any Script
Rogarema said…
What if I have the limit set to 32768 and I become the error message?
witeX said…
I't helps, when u simply login to system. If use `su` to user, need uncommtent one row in /etc/pam.d/su
"session required pam_limits.so"

Popular posts from this blog

Fixing sendmail take a long time to start

I notice that my database box[FC6+Oracle10.2] take along time to startup. Sendmail and sm-client very very slow to start[ about 5 minutes ]. There's something wrong in /etc/hosts file. 'newalises' command take long time to update and finish with error below. [root@ora10g ~]# newaliases WARNING: local host name (ora10g) is not qualified; see cf/README: WHO AM I? /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.1.55 ora10g [root@ora10g ~]# To fix this, custom hostname[ora10g] need to append to localhost line in /etc/hosts. [root@ora10g ~]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ora10g 192.168.1.55 ora10g [root@ora10g ~]# newaliases /etc/alia

using Class.getResource() load resource file in Eclipse

There are many ways to load resource file in java app. What sun recommended is using Class.getResource(" resource_name ") or Class.getResourceAsStream(" resource_name ") then you will get URL and InputStream respectively. If resource_name is specified without "/", it will be prepend with Class package. So resource file must be in same place[folder structure] as the Class. What I love to do is call getResource() with "/" and put resource file at the root of package. This way i can have separate resource folder. below is in Eclipse, 1. From Package explorer right click src folder->click import 2. In import dialog, Choose General->File System ->next 3. from directory:->Browse to your resource folder. 4. to folder:-> I add "resource" as a folder name under src folder. then click "Finish". In the code, load resource with this.getClass().getResource("/resource/buttons1.png") or this.getClass().getResourceAs

Converting dat to mpeg file, to burn vcd on ubuntu

Creating vcd [from dat file] on WinXP, I use "Nero Burning Rom". It can burn dat file to vcd directly. On ubuntu, AFAIK, No burning cd software to burn dat to vcd. I use k3b but it can't burn dat file. It support only mpeg-1 and mpeg-2 format. Dat file need to convert to mpeg first. Thist post will show how I install and use vcdgear to convert dat file to mpeg file. pnix@pnix-a7n:~/progdl$ wget http://www.vcdgear.com/files/vcdgear176-040415_linux.tar.gz --04:21:14-- http://www.vcdgear.com/files/vcdgear176-040415_linux.tar.gz => `vcdgear176-040415_linux.tar.gz' Resolving www.vcdgear.com... 66.98.192.104 Connecting to www.vcdgear.com|66.98.192.104|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 442,937 (433K) [application/x-tar] 100%[====================================>] 442,937 105.23K/s ETA 00:00 04:21:20 (87.02 KB/s) - `vcdgear176-040415_linux.tar.gz' saved [442937/442937] pnix@pnix-a7n:~/progdl$ tar xzf vcdgear