What is the best way to handle "too many open files" errors?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Hello,
I'm managing a pgsql --> django --> mod_python --> apache machine that serves no media, but handles the postgres memcached and apache part of the stack all by itself. It's a dedicated virtual server with Red Hat EL and 1GB RAM.
As traffic to the site has ramped up over time, I've begun to encounter "too many open files in the system" errors via Apache that look something like this:
OperationalError: FATAL: could not open file <filename>: Too many open files in system
This has become something of a debilitating problem and I'm struggling to come up with the best strategy for handling it. Some people have told me that I can solve it by better configuring my existing machine -- while others have insisted that I must upgrade my server rig by expanding it beyond one DV.
My hopes in posting here is that y'all might give me some insight into how I can answer the question about the better approach.
I've run the commands you see below and the conclusion that I'm drawing is that the I simply have way too many httpd file objects open -- but I'm unsure about the wisest way of reducing them -- or whether I can reasonably expected them to go down much.
I'd very much appreciate any insight the list could provide into the situation, even if it's just point me to a reference. I've trolled the lists and the web and still am a Iittle unsure of the best approach, so I thought I'd post. If I'm overlooking the most awesome
tutorial or previous lister post ever, please forgive my ignorance. I'd
appreciate even just the link.
Thank you,
Ben.
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 137215
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
postgres.conf (max_files_per_process is commented out)
max_connections = 100
shared_buffers = 1000
$ httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
httpd.conf...
Timeout 20
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
$ cat /proc/sys/fs/file-nr
73320 0 262144
$ lsof | awk '{print $1}' | sort | uniq -c
1 COMMAND
10 awk
49 bash
17 crond
5154 httpd
9 init
25 lsof
39 memcached
807 postmaste
62 saslauthd
69 sendmail
28 sh
7 sort
183 sshd
13 syslogd
8 uniq
19 xinetd
[Index of Archives]
[Open SSH Users]
[Linux ACPI]
[Linux Kernel]
[Linux Laptop]
[Kernel Newbies]
[Security]
[Netfilter]
[Bugtraq]
[Squid]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Samba]
[Video 4 Linux]
[Device Mapper]