ftasv and ScoreBoardFile on FreeBSD 10 with jails

Benjamin Connelly ben at electricembers.coop
Mon Mar 30 15:52:14 UTC 2015


>> We recently upgraded some FreeBSD 9.1 servers to FreeBSD 10.1 and
>> found it broke the scoreboard viewing utility we were using, the
>> "ftasv" port (ftss).
>> For that tool to work apache is supposed to be configured to use 'a
>> "name based" shared memory segment' (from their README) by the
>> directive
>> ScoreBoardFile /var/run/apache_status
>> That used to (on FreeBSD 9.1) create that "file". Then we could
>> execute 'ftasv /var/run/apache_status' to interpret it and see what
>> requests apache was working to serve.
>> This even worked with many different apache instances running each in
>> their own jail, where all the jails actually share the same basejail
>> /usr/local/sbin/httpd binary. Inside each jail we could see just the
>> requests that instance of apache was working on.
>> But after the FreeBSD upgrade to 10.1 we no longer see the
>> apache_status file in the filesystem, and ftasv seems to actually
>> report the most recent hits from the most recently restarted instance
>> of apache, even if that's in another jail!? (On a system with no jails
>> and just the one instance of apache, it's not actually a problem!)
>> Can anybody point me toward the right dials to turn if it's still
>> possible to do this scoreboard viewing of each independent apache
>> instance? (Like I think I may need security.jail.param.allow.sysvipc=1
>> in the jails, but I'm also finding with ezjail I'm not actually able
>> to get that set because it's creating the /var/run/jail.JAILNAME.conf
>> file with both these lines in it:
>>        allow.sysvipc = 0;
>>        allow.sysvipc=1;
>> Ben
> 
> You definitely don't want to try setting anything under security.jail.param.* - those are just informational, used by jail(8) to know the identities and formats of the currently available parameters.  One of the two lines that is ending up in /var/run/jail.JAILNAME.conf is correct, though it's not immediately obvious which one.
> 
> ftss claims you need name-based shared memory, i.e. memory-mapped files.  This has nothing to do with SYSV-style shared memory, except that it's the modern (i.e. right) way to do shared memory and SYSV IPC is the old (i.e. wrong) way.  So that would make me think it doesn't matter what you do with allow.sysvipc.  Maybe ftss first tries SYSV, and if that works it goes with that, and if it doesn't then it tries the memory-mapped file (which isn't what it says it does, but that's neither here nor there).  Jails that allow SYSV IPC don't segregate it into per-jail namespaces, which is IMHO a bug and which would explain it seeing some other jail's status.  Memory-mapped files on the other hand depend on the file being the same (and not just the same name), so a typical jail will not be able to share another jail's memory-mapped files because it can't see another jail's filesystem namespace.
> 
> This is making me think you want allow.syscipc=0.  I'm not sure how you would set that in ezjail, but I would assume it's ... well ... easy.
> 
> - Jamie

Well I have heard back from the developers of ftss that it uses “whatever apr uses” for shared memory. 

It sure seems like something changed here and that jails should each have their own apache scoreboard shared memory and not be able to see the others, like it was in the FreeBSD 9’s. . . 

Does anybody know anything about this?

 Benjamin


More information about the freebsd-jail mailing list