Greetings,

I am indeed in a very strange situation, to me at least.  We've got a
good-sized database (about 60gb) over 4k tables.  We average about 300
queries per second.  We've recently noticed some strange behavior at around
430 connections.  We get the "unable to create new thread (errno 11) if you
are not out of available ram you may have encountered an OS bug, see the
manual." error.  When this happens, we usually have a gig or two of ram
available.  I haven't been able to gleam more details from the manual, so
here I am.

Using the formula (key_buffer_size + (record_buffer +
sort_buffer)*max_connections) from the docs, it appears that right when the
connection count hits about 430, 2gb of ram is being used.

After much tweaking of my.cnf, I can get just under 600 connections by
reducing record and sort buffers.  Conversely, if I set key_buffer to
something large (ie. 1gb) I cap out at a couple hundred connections.  Is
their some kind of limit imposed on allocated memory by mysql?  Or should I
look elsewhere (Kernel, pthreads)?

This question may sound somewhat absurd and if my hosting provider hadn't
said "MySQL has a 2gb limit that is very painful to overcome" I wouldn't
even ask.  But I've been dealing with this for the last two weeks, at this
point I'll settle for anything.  :)

Thank you for your time,
Adam Erickson
[EMAIL PROTECTED]

System specs:
4x700 Xeon (1mb)
4gb Ram
Kernel 2.4.9 (SMP, enterprise)
MySQL-max v3.23.52 (MySQL AB binary release)

my.cnf (hacked to bits at this point):
...
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
set-variable    = key_buffer=256M
set-variable    = max_allowed_packet=1M
set-variable    = table_cache=4096
set-variable    = sort_buffer=1M
set-variable    = record_buffer=1M
set-variable    = thread_cache=12
# Try number of CPU's*2 for thread_concurrency
set-variable    = thread_concurrency=12
set-variable    = back_log=10
set-variable    = thread_stack=64k
set-variable    = max_connect_errors=20
set-variable    = record_rnd_buffer=2M

log-bin
server-id       = 1

set-variable    = max_connections=600
replicate-ignore-db=mysql
set-variable    = wait_timeout=600

# Point the following paths to different dedicated disks
#tmpdir         = /tmp/
#log-update     = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
set-variable    = bdb_cache_size=384M
set-variable    = bdb_max_lock=100000

# Uncomment the following if you are using Innobase tables
#innodb_data_file_path = ibdata1:2000M:autoextend:max:4000M;ibdata2:4000M
#innodb_data_file_path = ibdata1:2000M;ibdata2:4000M:autoextend:max:6000M
innodb_data_file_path =
ibdata1:2000M;ibdata2:6000M;ibdata3:6000M;ibdata4:6000M;ibdata5:6000M;ibdata
6:10M:autoextend:max:6000M
innodb_data_home_dir = /opt/mysql/data
innodb_log_group_home_dir = /opt/mysql/data
innodb_log_arch_dir = /opt/mysql/data
set-variable = innodb_mirrored_log_groups=1
set-variable = innodb_log_files_in_group=3
set-variable = innodb_log_file_size=5M
set-variable = innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_log_archive=0
set-variable = innodb_buffer_pool_size=8M
set-variable = innodb_additional_mem_pool_size=8M
set-variable = innodb_file_io_threads=8
set-variable = innodb_lock_wait_timeout=50

[mysqldump]
...

[safe_mysqld]
open-files-limit=8192


---------------------------------------------------------------------
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

Reply via email to