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 systemThis 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

Reply via email to