Date: Wed, 27 Feb 2008 11:26:05 +0300 From: Stanislav Sedov <stas@FreeBSD.org> To: Arkadi Shishlov <arkadi@mebius.lv> Cc: freebsd-performance@freebsd.org Subject: Re: PHP with open_basedir performance problem Message-ID: <20080227082605.GL51827@dracon.ht-systems.ru> In-Reply-To: <47B478E6.8080902@mebius.lv> References: <479B1185.8020604@quip.cz> <479D89C9.7060300@chistydom.ru> <479DD94C.7010409@mawer.org> <479DE578.7060202@quip.cz> <20080214163037.GA51014@dracon.ht-systems.ru> <47B478E6.8080902@mebius.lv>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Feb 14, 2008 at 07:22:46PM +0200 Arkadi Shishlov mentioned: > Stanislav Sedov wrote: >> I'd suggest you to disable open_basedir at all or roll out specialized >> implementation. I had a lot of similar problems with open_basedir in >> the past, so I just rewrote it to match our specific security policy. > > Can you share a hint how exactly this specialized implementation may look like? > The requirement is simple: php script working under apache mod_php can't > open files outside of virtual host document root whenever php safe mode is > enabled or disabled. Website owners can create symlinks. > I understand the open_basedir is kinda flawed security measure, and > safe_mode is a primary safeguard with mod_php, but it would be nice to get > it working under FreeBSD too. Well, my security mechanizms are pretty simple and use some combination of MAC and bare uids/gid to enforce required permissions. The code is about 100 lines of code, much less then original open_basedir implementation. In any case, the code won't be usuful to you as is, it works combined with ad-hoc apache module, that sets required flags, variables, etc. > >> Most basedir problems are linked with the fact it produce a lot of lstast/ >> readlinks on every require, include or open command. On Linux it pereforms >> even worse, as they implemented readlink there by hand, and, of course, >> their implementation isn't particulry good. > > But there is no high sys cpu usage on Linux in contrary to FreeBSD, as > reported by original author of the thread..? > Do you have numbers or benchmark ready? I see the number of syscalls > required is astonishing (on Linux) but doesn't cause any problem at first > look. > I don't have specific benchmark numbers, and it's true, that top on Linux don't show such sys time usage, as on FreeBSD boxes. However, the overall performance of boxes on FreeBSD is 30-40% higher, that Linux ones. This numbers is empirical, but I'm pretty sure in them: in past I migrated Linux hosting to FreeBSD-based, and after that, I was able to add a bunch of new users to that boxes without performance impact. In fact, the load average on these boxes are MUCH lower, that was on Linux. Also, I notices, that stat() costs much more on Linux, that FreeBSD. I don't certainly know, why Linux shows low sys time usage, probably it's just bugs in accounting. My basedir patches was implemented later on FreeBSD boxes, and I never returned to Linux. Thus I can't say whether it impacts Linux performance, or nor... -- Stanislav Sedov ST4096-RIPE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080227082605.GL51827>