Where am I wasting resources? How to fix this problem?

Mel Flynn mel.flynn+fbsd.questions at mailing.thruhere.net
Tue May 5 21:04:32 UTC 2009


On Thursday 30 April 2009 21:49:13 Chuck Swiger wrote:
> Hi, VeeJay--
>
> On Apr 30, 2009, at 12:02 PM, VeeJay wrote:
> > Guys, I am not very good on freebsd, its you guys who help me to
> > keeping my
> > server up... I hope you can spare a few minutes to sort this
> > problem...
> >
> > last pid: 19656;  load averages:  1.00,  1.00,
> > 1.00
> > up 2+05:00:12  19:18:47
> > 3049 processes:2 running, 3047 sleeping
> > CPU: 12.5% user,  0.0% nice,  0.1% system,  0.0% interrupt, 87.4% idle
> > Mem: 6253M Active, 3810M Inact, 921M Wired, 128K Cache, 214M Buf,
> > 4683M Free
> > Swap: 32G Total, 32G Free
> >
> > PID USERNAME    THR PRI NICE   SIZE    RES STATE  C   TIME   WCPU
> > COMMAND
> > 830 mysql      1500  44    0  1670M   813M ucond  1   0:00 100.00%
> > mysqld
>
> It sure looks like you're running into a system limit with the maximum
> # of threads available to the mysql process.

There's no such limit, see pthread_create(3) and pthread.h:
#define PTHREAD_THREADS_MAX                     __ULONG_MAX

but the 1500 is suspicious. Suspicious enough to be a MySQL configuration 
value or compile time option. The only way to get to the bottom of it, is to 
watch the number of threads in the mysql process and attach ktrace to it the 
moment it approaches 1500, to see if pthread_create actually does return 
EAGAIN and get a hint as to where. My suspicion however is that the thread 
abstraction of MySQL sets EAGAIN.

A my.cnf certainly would help.
-- 
Mel


More information about the freebsd-questions mailing list