高手指教:
最近php(5.2.13)+mysql(5.0.45)+window2003服务器运行遇到一个错误:can't create a new thread(errno 12):if you are not avaiable out of memory ....间歇性的出现此问题,每次都是重启mysql服务器解决问题(不重启要过会访问页面也恢复正常)
我查看了mysql的内存占用,是在不断升高的而且在 数据库服务器中 同时安装了mysql 和 sqlserver我的my.ini 文件配置如下[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
# 各种缓存大小# 索引块缓存
key_buffer_size = 512M
max_allowed_packet = 1M# 所有线程打开表的数量
table_cache = 1024# 对排序缓存
sort_buffer_size = 1M# net_buffer_length = 8K# 读缓存
read_buffer_size = 1Mread_rnd_buffer_size = 2M# 排序myisam索引分配的缓冲区
myisam_sort_buffer_size = 4Mjoin_buffer_size= 16Mwait_timeout = 120# 可以复用的保存在缓存中的线程数量
thread_cache_size=120
# 查询缓冲
query_cache_size = 32M#临时表大小
tmp_table_size= 64M# 真实的并发处理数(cpu内核数)
thread_concurrency=4请问如何解决此问题没有多少分,我全部奉上

解决方案 »

  1.   

    查看下innodb_thread_sleep_delay  多少?默认的好像是10000,如果是,改小些innodb_thread_sleep_delay = 60试试
      

  2.   

    google说:
    不能创建一个新线程(errno的12):如果你不缴费了记忆....你使用了长连接吧?
      

  3.   


    我用的是myisam表,innodb_thread_sleep_delay我试过,不行
      

  4.   


    没有长连接,用的是discuz的,配置文件pconnect=0的,长连接关闭了,没有长连接
      

  5.   

    1、MySQL 线程开得太多。2、服务器系统内存溢出。3、环境软件损坏或系统损坏。进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。google出来的。。
      

  6.   

    max_connections=446//默认好象是446把它设大些呢??
      

  7.   


    这个我改过,改小了150,然后报错说是超过此连接数
    改大了,就是报错 can't create a new thread ,...
      

  8.   

    innodb_thread_sleep_delay=40
    wait_timeout=100然后再看下:
    http://blog.sina.com.cn/s/blog_5d568fff0100bf0u.html
      

  9.   

    可能是没有申请到内存。
    thread_cache_size是不是太大了阿? 缓存的线程数。
    建议值
    内存 -> thread_cache_size
    >3G -> 64
    3G -> 32 
    2G ->16
    1G -> 8 
    key_buffer_size 好像也有点大 。。
    你的服务器多大的内存阿?
      

  10.   


    非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver
      

  11.   


    非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver