You may get a signal 11 because mysqld process is running out of virtual memory (instead of physical memory). If you want to run 1500 simultaneous connections, you have to be very careful on how mysqld allocates its memory:
Since you are on a 32bits system, a process is limited to 4Gb. On Linux, these 4Gb are split in 3Gb user space/1Gb kernel space and user space is split in 1Gb code segment/2Gb data segment. So you have "only" 2Gb for all mysqld data. You can get more info on how mysqld allocates memory at: http://www.mysql.com/doc/en/Memory_use.html and http://www.mysql.com/doc/en/InnoDB_start.html if you have InnoDB.
As a rule of thumb, execute 'show variables', evaluate: key_buffer_size + innodb_additional_mem_pool_size + innodb_buffer_pool_size + innodb_log_buffer_size = global_data_size
thread_stack + 2 * net_buffer_length (1 connection buffer, 1 result buffer) + record_buffer OR record_rnd_buffer (depends on table access method) + sort_buffer_size (if resultset needs to be sorted) = per_thread_data_size
and make sure that: global_data_size + per_thread_data_size * nb_of_connections < 2Gb
Although I have never run mysql with more than ~600 connections, I have used this formula (a simplified version since I don't use InnoDB) to allocate a key_buffer as big as possible and make sure that I won't run out of memory.
Hope this helps, Joseph Bueno
Philipp wrote:
Hi Dan,
i just talked about openmosix because i read about shared memory segments. my only desire is to make mysql able to spawn 1000-1500 connections and *not* to tell my client "cant create new thread, perhaps out of memory" while 1.5 GB of RAM is only used for caching. Is that really possible that mysql is not able to handle this amount of connections ?
My best Regards, Philipp
On Wed, 19 Mar 2003 10:01:38 -0600 Dan Nelson <[EMAIL PROTECTED]> wrote:
In the last episode (Mar 19), Philipp said:
thank you for your answer. While i was reading about clustering some weeks ago i read the openmosix FAQ claiming that openmosix would not work with apache, because apache was using shared memory to communicate with its threads, and i always thought mysql is designed the same way. Please someone correct me if i am wrong.
SYSV shared memory (shm*) is a block of memory that one process creates, and depending on the access flags, multiple processes can attach to and see each other's changes.
Threads use shared memory by definition, because a threaded application is still one process. No SYSV shm tricks are needed.
Openmosix won't be able to balance mysql threads, because even if it were possible to synchronize shared memory between machines with Mosix, synching thread mutexes would be horrendously slow. Better to just get a multi-CPU box.
-- Dan Nelson [EMAIL PROTECTED]
--------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php