| 
	
 | 
 Posted by Sander Holthaus - Orange XL on 02/07/05 23:41 
> Sander Holthaus - Orange XL wrote: 
> > I'm running Apache 2.0.52 and PHP 5.03 in a jailed (Virtual Private 
> > Server) 
> > FreeBSD 4.10 envirorement. PHP 5.03 is running as php_mod and was  
> > installed quite recently. Since then (better, since someone started  
> > using it) I've been getting these errors in the httpd-error log: 
> > 
> > Allowed memory size of 8388608 bytes exhausted (tried to allocate 79 
> > bytes) 
> > 
> > And this one in the php-error log: 
> > 
> > [06-Feb-2005 17:25:50] PHP Fatal error:  Allowed memory size of  
> > 8388608 bytes exhausted (tried to allocate 6587593 bytes) in  
> > xxx/xxx/xxx/xxx/xxx/xxx.php on line 53 
>  
> Fix or disable that script. 
 
I wish I could, but I'm not a PHP-programmer (can read it and can do some 
basic programming, but I lack in-depth knowledge of PHP). 
  
> > I also see several thousands of notices in the PHP-error log within  
> > the time-frame of a single second, plus diveded by zero, etc. 
>  
> Are they coming from the same script?... 
 
Those notices, yes. 
  
> Again, fix or disable that script. 
>  
> > Of course, I asked the programmer to fix all of these issues.Among  
> > others, there was a script that outputted a html-form with  
> 2 columns,  
> > 100 rows each containing select-boxes with 100 full names  
> (and those  
> > 100 names were the same of every column/row in that form :-|). 
>  
> You're simply going to have to work with that programmer to  
> get them to write better code, or not work with them  
> (terminate their account). 
 
As it is a personal friend, it is an difficult situation. Getting him to 
write better code isn't easy, he's mainly interested in functionality and 
getting program done ASAP. 
 
> > But the problem is not so much that someone is using broken and the  
> > most inefficient scripts, but more that they are crashing  
> the entire box! 
>  
> That's definitely not good. 
 
Nope, and I can't figure out why. I've set the memory limits in php.ini plus 
some additional things in httpd.conf (RLimitMEM, etc), but for some reason, 
memory keeps getting consumed. What I find really troublesome is that it 
effects both php (running as mod_php) and cgi. After some time, cgi-scripts 
start failing too with: 
 
Out of memory during "large" request for 134221824 bytes, total sbrk() is 
134369280 bytes., referer: ... 
 
Which makes no sense to me at all. 
 
> But there is only so much you, and PHP, can do to stop a bad  
> programmer from chewing up resources. 
>  
> > When these scripts are run, the box becomes totally unresponsive,  
> > afterwards all cgi and php request to Apache fail with a  
> 500 error and  
> > sometimes the whole box crashes completely, apparently from memory  
> > exhaustion. :-( 
> > 
> > It this a bug somewhere in PHP, Apache or FreeBSD? 
>  
> No.  It's a bug in the script/program that causes the crash. 
>  
> > How can I protect myself against this? I can't manually check every  
> > script, 
>  
> You can identify the culprit script, and disable it, and  
> notify the client that they are violating their terms of  
> service to run it again on a production server until it is debugged. 
>  
> Get them to install PHP on their own machine and develop on that. 
 
They did actually, though it was a Windows box, with prety much the standard 
configuration. 
  
> > and the memory and time limits in php.ini (20s for exe, 30s  
> for input  
> > and 8MB for mem) don't seem effective here. What are my options to  
> > make Apache 
> > 2 
> > and PHP 5 full proof against such scripts? 
>  
> NOTHING is foolproof.  Ever. 
>  
> You can change those numbers and be more harsh, but that will  
> affect ALL users, not just the one who's bringing your box down. 
>  
> You would be far better off, for all your clients, to deal  
> directly with the client who's causing the problems. 
>  
> Perhaps get them in touch with a good progammer, or up-sell  
> them your services in fixing their scripts or... 
 
:-( The downside would be, IMHO, that I would need to pro-actively check 
everything that is going on concerning PHP, in order to prevent any major 
problems. (one and a halve month ago, some clients on an other installation 
who hadn't mainted phpBB also caused me the necessary problems). Also, when 
clients are non-commercial, a good programmer is out of the question (which 
applies to this case too). I wonder how mass hosting companies get arround 
these issue's? 
 
Thanks for the input!  
 
Kind Regards, 
Sander Holthaus
 
  
Navigation:
[Reply to this message] 
 |