os:windows server2003 
mem:8G
mysql版本5.0.22
17:37:48 [ERROR] Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
相关参数
max_connections=300
query_cache_size=256M
table_cache=519
tmp_table_size=32M
thread_cache_size=40
key_buffer_size=60M 
read_buffer_size = 256K
read_rnd_buffer_size = 512K
sort_buffer_size = 512K  
innodb_additional_mem_pool_size=64M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=2M
innodb_buffer_pool_size=800M
innodb_log_file_size=24M 
innodb_thread_concurrency=10
innodb_lock_wait_timeout=5
wait_timeout=72000
这些参数我已经调的很保守了,现在还报  
Forcing close of thread 88
麻烦各位分析分析!

解决方案 »

  1.   

    不知道你的内存是多大的,把我的给你,你比较一下吧,我的内存是1G
    max_connections        = 100
    key_buffer = 16M
    max_allowed_packet = 16M
    thread_stack = 128K
    thread_cache_size = 8
    query_cache_limit       = 1M
    query_cache_size        = 16M
    expire_logs_days = 10
    max_binlog_size         = 100M
    跟我这个比,你的配置的确高了许多
      

  2.   

    tmp_table_size=32M 这个弄大点?
      

  3.   

    表是什么引擎,执行什么操作(SQL、SP)出现此问题
      

  4.   

    innodb引擎,8G内存,里面的SQL写的特别乱,有N多子查询,我实在看不下去了。是别人公司的库让我帮忙看一下。
      

  5.   

    有慢日没有?具体是执行什么SQL语句?
      

  6.   

    没慢日志,但是我看SQL里面,有许多
    selct col1,
    select (col1) from table1 as col2,
    select (col1) from table2 as col3,
    select (col1) from table3 as col4,
    select (col1) from table4 as col5,
    col5 
    from 
    table where 条件
    这样的SQL。
      

  7.   

    比如一执行某条SQL语句,就会出现此情况,没有具体问题查找问题比较困难
      

  8.   

    总体感觉,你的几个参数还是比较大的。
    max_connections=300
    query_cache_size=256M
    innodb_buffer_pool_size=800M建议按提示you may have to use 'ulimit' to allow mysqld 先 改 一下试试。想办法先断定,是物理内存不够了,还是达到你自己设置的MYSQL这些参数的上限了。物理内存不够 则要减小你的这些叁数。
    而如果是达到参数的上限,则相反,需要加大 这些叁数
      

  9.   

    版主大哥,windows server2003如何给mysqld加个ulimit参数,这个我没搞过!
      

  10.   

    打开mysql general log,看看有无提示
    [mysqld]
    log=query.log
      

  11.   

    error.log中的内容是什么?贴全
      

  12.   

    这不是内存的问题,是操作系统的问题。32位的操作系统不支持大内存,我们的服务器也是8G内存,在标准版的win2003下只能有效地用到2G,加了 /PAE /AWE 参数仍然达不到要求。建议改用64位的CentOS5.4(如http://www.dfwgw.com),优化可参照http://www.sqlserver.com.cn/c2l0ZS9zaG93Lmh0bWw_bXlpZD00MzkwNw==url.html
      

  13.   

    楼上有道理,楼主的SERVER 2003是什么版本?
    Win2003 boot.ini
    [boot loader] 
    timeout=0 
    default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 
    [operating systems] 
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /usepmtimer /NoExecute=OptIn /PAE试试有无效果
      

  14.   

    建议换linux,我们也准备换呢。
      

  15.   

    /PAE 让系统能识别两G以上内存,但实际上还是不能突破分配上限,/PWE 让系统尽量使用物理内存,对性能提高有相当的帮助。
    如果实在不能换系统,还有一办法可以把内存用起来,就是安装一个软件把两G以外的内存虚拟成硬盘,把这部分硬盘设置成MySQL的临时目录(tmpdir = J:/mysql/data/tmp/)
      

  16.   

    支持,我的系统4G内存,XP就是用虚拟硬盘将4G用完
      

  17.   

    去手册上看看哪些变量是SESSION 级别的,哪些是GLOBAL级别的。