I've got a call from a customer with a msql2 server. (I know very old
and deprecated but he needs a quick fix).
In some situations he reaches the limit of 200 concurrent connections.
In this post [1] concerning the same issue
David J. Hughes himself stated:
<quote>
It is limited by the capabilities of the underlying operating system,
not by
some macro in the mSQL source code.
</quote>
I've found in the code of msqld.c [2] that maxCons is derived from the
Maximum Open Filedescriptors, but limited to 256 if rlimit is higher.
it compiles and starts with this artificial rlimit removed (states that
he now has 968 Connections avaiable). But if someone with better
knowledge of msql can confirm this not beeing a problem to do so (side
effects, other limits which depends on this limit, etc.), it would be
nice to know before deploying this at customers side.
thanks in advance for any answers
Regards,
Romeo Benzoni
[1]
http://groups.google.ch/group/mailing.database.w3-msql/browse_frm/thread/54b91e2e2fdf70d/67c19fdb45d79ee6?lnk=gst&q=Max+Connections&rnum=1#67c19fdb45d79ee6
[2]
getrlimit(RLIMIT_NOFILE,&limit);
limit.rlim_cur = (limit.rlim_max > 256)? 256 : limit.rlim_max;
setrlimit(RLIMIT_NOFILE,&limit);
getrlimit(RLIMIT_NOFILE,&limit);
maxCons = limit.rlim_cur - CACHE_FDS;
printf("\tServer process reconfigured to accept %d connections.\n",
maxCons);
I've got a call from a customer with a msql2 server. (I know very old
and deprecated but he needs a quick fix).
In some situations he reaches the limit of 200 concurrent connections.
In this post [1] concerning the same issue
David J. Hughes himself stated:
<quote>
It is limited by the capabilities of the underlying operating system,
not by
some macro in the mSQL source code.
</quote>
I've found in the code of msqld.c [2] that maxCons is derived from the
Maximum Open Filedescriptors, but limited to 256 if rlimit is higher.
it compiles and starts with this artificial rlimit removed (states that
he now has 968 Connections avaiable). But if someone with better
knowledge of msql can confirm this not beeing a problem to do so (side
effects, other limits which depends on this limit, etc.), it would be
nice to know before deploying this at customers side.
thanks in advance for any answers
Regards,
Romeo Benzoni
[1]
http://groups.google.ch/group/mailing.database.w3-msql/browse_frm/thr...
[2]
getrlimit(RLIMIT_NOFILE,&limit);
limit.rlim_cur = (limit.rlim_max > 256)? 256 : limit.rlim_max;
setrlimit(RLIMIT_NOFILE,&limit);
getrlimit(RLIMIT_NOFILE,&limit);
maxCons = limit.rlim_cur - CACHE_FDS;
printf("\tServer process reconfigured to accept connections.\n",
maxCons);
-----------------------------------------------------------------
This is the Mini SQL Mailing List operated by Hughes Technologies
To unsubscribe, go to http://www.Hughes.com.au/extras/email/
The reason for enforcing a 256 limit in the software is because at
the time of writing, 256 was as good as it got. Most kernels
reported values lower than 256. Some "broken" kernels would happily
report much larger numbers but then fail in spectacular ways if you
ever reached those sort of numbers. BSDI's code was particularly bad
in this area if my memory is working properly.
If you are using a modern OS then you could probably get away with
either increasing or removing that limit. I guess you could take the
"suck it an see" approach and change the 256 to 512 and see if it
works properly. I'd still find a limit that works for you rather
than just blindly relying on the OS to tell you the truth.
Oh, and I appreciate the amount of research you did into this before
posting to the list. Great work Romeo.
Bambi
..