Have you considered increasing the open files limit? Have a look at the
ulimit command. The default is sometimes not enough.

Cheers,

Igor

On Wed, May 20, 2009 at 4:00 PM, Ben Welsh <ben.we...@gmail.com> wrote:

> 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