You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by "Spinka, Kristofer" <ks...@style.net> on 2003/03/27 08:27:51 UTC

["PATCH"] STATUS: fcntl() oddness on Solaris

I would like to close the following issue with a README addition.

Excerpt from STATUS:
====================
    * fcntl() oddness on Solaris.  Under high loads, fcntl() decides to
      return error code 46 (ENOLCK).

      httpd (prefork MPM) error log says (predictably):

      (46)No record locks available: couldn't grab the accept mutex

      All of the children report this and subsequently exits.  httpd is
now
      hosed.  AFAICT, this does not look to be an out-of-fds error.

      Solaris's man page says:
        ENOLCK
           The  cmd argument is F_SETLK, F_SETLK64, F_SETLKW,  or
           F_SETLKW64  and  satisfying the lock or unlock request
           would result in the number of locked  regions  in  the
           system exceeding a system-imposed limit.

      Justin says: What is this system-imposed limit and how do we
change it?
                   This gives me more rationale for switching the
default
                   interprocess lock mechanism to pthread (if
available).
============


Explanation:
============
  The system imposed default limit of outstanding lock requests is 512.
You can verify this by, in a contemporary version of Solaris:

	# mdb -k
	> tune_t_flckrec/D
	tune_t_flckrec:
	tune_t_flckrec: 512

  This can be increased by adding the following to /etc/system:

	set tune_t_flckrec=1024

  and rebooting.

  Of course "1024" can be any reasonable limit, although I do not know
what "reasonable" should be, so be conservative, only increase this as
necessary.
============


Notes:
======
  If someone would please test this on a system known to break that
would be great.  In addition it is mentioned that *all* of the children
report this, is it actually all of them, or all of them after a certain
threshold?


  /kristofer


Re: ["PATCH"] STATUS: fcntl() oddness on Solaris

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
Would you post this again as a patch against apr/STATUS?

Great observations - explains some wierdness we've been observing
lately with SSL on Solaris.

Bill

At 01:27 AM 3/27/2003, you wrote:
>I would like to close the following issue with a README addition.
>
>Excerpt from STATUS:
>====================
>    * fcntl() oddness on Solaris.  Under high loads, fcntl() decides to
>      return error code 46 (ENOLCK).
>
>      httpd (prefork MPM) error log says (predictably):
>
>      (46)No record locks available: couldn't grab the accept mutex
>
>      All of the children report this and subsequently exits.  httpd is
>now
>      hosed.  AFAICT, this does not look to be an out-of-fds error.
>
>      Solaris's man page says:
>        ENOLCK
>           The  cmd argument is F_SETLK, F_SETLK64, F_SETLKW,  or
>           F_SETLKW64  and  satisfying the lock or unlock request
>           would result in the number of locked  regions  in  the
>           system exceeding a system-imposed limit.
>
>      Justin says: What is this system-imposed limit and how do we
>change it?
>                   This gives me more rationale for switching the
>default
>                   interprocess lock mechanism to pthread (if
>available).
>============
>
>
>Explanation:
>============
>  The system imposed default limit of outstanding lock requests is 512.
>You can verify this by, in a contemporary version of Solaris:
>
>        # mdb -k
>        > tune_t_flckrec/D
>        tune_t_flckrec:
>        tune_t_flckrec: 512
>
>  This can be increased by adding the following to /etc/system:
>
>        set tune_t_flckrec=1024
>
>  and rebooting.
>
>  Of course "1024" can be any reasonable limit, although I do not know
>what "reasonable" should be, so be conservative, only increase this as
>necessary.
>============
>
>
>Notes:
>======
>  If someone would please test this on a system known to break that
>would be great.  In addition it is mentioned that *all* of the children
>report this, is it actually all of them, or all of them after a certain
>threshold?
>
>
>  /kristofer