最近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 = 1M
read_rnd_buffer_size = 2M
# 排序myisam索引分配的缓冲区
myisam_sort_buffer_size = 4M
join_buffer_size= 16M
wait_timeout = 120
# 可以复用的保存在缓存中的线程数量
thread_cache_size=120
# 查询缓冲
query_cache_size = 32M
#临时表大小
tmp_table_size= 64M
# 真实的并发处理数(cpu内核数)
thread_concurrency=4
请问如何解决此问题
没有多少分,我全部奉上
13 个解决方案
#1
查看下innodb_thread_sleep_delay 多少?
默认的好像是10000,如果是,改小些innodb_thread_sleep_delay = 60试试
默认的好像是10000,如果是,改小些innodb_thread_sleep_delay = 60试试
#2
google说:
不能创建一个新线程(errno的12):如果你不缴费了记忆....
你使用了长连接吧?
不能创建一个新线程(errno的12):如果你不缴费了记忆....
你使用了长连接吧?
#3
我用的是myisam表,innodb_thread_sleep_delay我试过,不行
#4
没有长连接,用的是discuz的,配置文件pconnect=0的,长连接关闭了,没有长连接
#5
1、MySQL 线程开得太多。
2、服务器系统内存溢出。
3、环境软件损坏或系统损坏。
进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。
google出来的。。
2、服务器系统内存溢出。
3、环境软件损坏或系统损坏。
进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。
google出来的。。
#6
max_connections=446//默认好象是446
把它设大些呢??
把它设大些呢??
#7
这个我改过,改小了150,然后报错说是超过此连接数
改大了,就是报错 can't create a new thread ,...
#8
这个也设置过了,不行
#9
innodb_thread_sleep_delay=40
wait_timeout=100
然后再看下:
http://blog.sina.com.cn/s/blog_5d568fff0100bf0u.html
wait_timeout=100
然后再看下:
http://blog.sina.com.cn/s/blog_5d568fff0100bf0u.html
#10
谢谢,看过的
#11
可能是没有申请到内存。
thread_cache_size是不是太大了阿? 缓存的线程数。
建议值
内存 -> thread_cache_size
>3G -> 64
3G -> 32
2G ->16
1G -> 8
key_buffer_size 好像也有点大 。。
你的服务器多大的内存阿?
thread_cache_size是不是太大了阿? 缓存的线程数。
建议值
内存 -> thread_cache_size
>3G -> 64
3G -> 32
2G ->16
1G -> 8
key_buffer_size 好像也有点大 。。
你的服务器多大的内存阿?
#12
非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver
#13
非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver
#1
查看下innodb_thread_sleep_delay 多少?
默认的好像是10000,如果是,改小些innodb_thread_sleep_delay = 60试试
默认的好像是10000,如果是,改小些innodb_thread_sleep_delay = 60试试
#2
google说:
不能创建一个新线程(errno的12):如果你不缴费了记忆....
你使用了长连接吧?
不能创建一个新线程(errno的12):如果你不缴费了记忆....
你使用了长连接吧?
#3
我用的是myisam表,innodb_thread_sleep_delay我试过,不行
#4
没有长连接,用的是discuz的,配置文件pconnect=0的,长连接关闭了,没有长连接
#5
1、MySQL 线程开得太多。
2、服务器系统内存溢出。
3、环境软件损坏或系统损坏。
进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。
google出来的。。
2、服务器系统内存溢出。
3、环境软件损坏或系统损坏。
进入 phpmyadmin 的 mysql 数据库中的 user 表,对数据库的用户进行编辑,修改 max_connections 的值。适当的改小一点。
google出来的。。
#6
max_connections=446//默认好象是446
把它设大些呢??
把它设大些呢??
#7
这个我改过,改小了150,然后报错说是超过此连接数
改大了,就是报错 can't create a new thread ,...
#8
这个也设置过了,不行
#9
innodb_thread_sleep_delay=40
wait_timeout=100
然后再看下:
http://blog.sina.com.cn/s/blog_5d568fff0100bf0u.html
wait_timeout=100
然后再看下:
http://blog.sina.com.cn/s/blog_5d568fff0100bf0u.html
#10
谢谢,看过的
#11
可能是没有申请到内存。
thread_cache_size是不是太大了阿? 缓存的线程数。
建议值
内存 -> thread_cache_size
>3G -> 64
3G -> 32
2G ->16
1G -> 8
key_buffer_size 好像也有点大 。。
你的服务器多大的内存阿?
thread_cache_size是不是太大了阿? 缓存的线程数。
建议值
内存 -> thread_cache_size
>3G -> 64
3G -> 32
2G ->16
1G -> 8
key_buffer_size 好像也有点大 。。
你的服务器多大的内存阿?
#12
非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver
#13
非常感谢,我的服务器内存3.5G,不过同时安装了sqlserver