René Fournier wrote:
> Hello,
>
> I have a command-line PHP script--called Listener--that is designed to
> run indefinitely with a predictable CPU usage and memory footprint. In a
> nutshell, it's a multi-client socket server that waits for incoming
> connections, processes incoming data, stores results in a MySQL
> database, and basically gets on with its life. And it works. No errors
> or serious problems to speak of. And I've been running it for a couple
> years on an Xserve dual-G5 2GHz w/ OS X Server 10.4.11). Six months ago,
> the program would run for days, even a couple weeks, without a hitch.
> The only reason I would stop the script is for some other purpose, like
> a software update.
>
> However, the number of socket clients connecting in the past 3-4 months
> has steadily increased, and this seems to have exposed (if not created)
> a strange performance "issue" with PHP 5.2.4, MySQL 5.0.45 and/or Mac OS
> X Server 10.4.11. (I say "and/or" because I am unsure where the
> problem's cause really lies.) Basically, after the script has been
> running for a day or so (processing essentially the amount data that
> used to take two weeks), the CPU usage of the machine goes from 30%
> (normal) to 80-90%. This appears to be irrespective of the number of
> clients connected to the server at the time, but rather the amount of
> time the script has been running (and therefore cumulative cycles it's
> operated, data processed, MySQL queries executed, etc.). And the CPU
> usage stays high, even when the actual load (number of clients)
> decreases. At this time, if I run top, I get the following info:
>
> 22512 mysqld 91.6% 8:22:12 31 106 125 305M+ 3.20M 260M
> 475M
> 17104 php 7.2% 81:14.01 1 15 145 5.08M 7.80M 10.9M-
> 87.5M
> 22537 Terminal 6.6% 2:59:59 22 176 240 12.3M 21.2M 18.3M-
> 236M
> [...]
>
> At first I thought, okay, it's MySQL's fault. Maybe a lot of
> slow-running queries. But the slow query log is pretty clean. So maybe
> it's a combination of Mac OS X and MySQL and PHP? I Googled for a
> similar problem, and finally ran across this article:
>
> http://www.shawnhogan.com/2005/10/mysql-problems-on-mac-os-x-server.html
>
> ...where the author describes a very similar CPU usage pattern. I tried
> his suggested fixes and they seemed to have helped a little (or maybe
> it's my wishful thinking--hard to tell), since the high CPU load issue
> doesn't appear to happen as soon... But it still happens.
>
> Anyway, I'm really stumped as to what to do next, where to look, etc. If
> I stop the script, and restart it (but not the MySQL itself), CPU usage
> goes back to normal--for about a day or two.
>
> The only thing I thought might be connected is how many short-lived PHP
> child processes Listener creates--around 20-30,000 per day. Sounds
> higher, but on average it's just one every 2-3 seconds. Anyway, although
> the number of child processes isn't concurrent, would there be a problem
> with the number of historical child processes in view of ulimits or
> kern.maxfilesperproc?
>
> Anyway suggestions, tips, or links are much appreciated. Thanks.
>
> ...Rene
>
I have a server that "listens" like yours does. I get 80k - 85k connections a
day to it.
When I first started it, I was only getting about 3k of connections aday. Then
I upped the
listening pattern and it tanked. I noticed that all my mail/web/db connections
just sat there.
When I investigated, I found that the number of connections to the server was
being overloaded. So
I increased the kern.maxfilesperproc setting to 32000. All the problems went
away.
I have about have the horse power you do, running OpenBSD 4.1, and it runs
great now as my
"listener" / web / ftp / mail / named / database / spam filter / etc...
One question about the "listener" program, does it maintain a connection to the
DB or does it
open/close a connection upon each socket connection? If it does the latter,
you might look into
using a constant connection rather then opening/closing on a per connection
basis.
--
Jim Lucas
"Some men are born to greatness, some achieve greatness,
and some have greatness thrust upon them."
Twelfth Night, Act II, Scene V
by William Shakespeare
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php