`
qn_lf
  • 浏览: 126077 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

请您先登录,才能继续操作

mysql最大链接数问题及Thread stack overrun

阅读更多

系统能不能连接数据库,关键要看两个数据:

1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。

2、数据库当前的连接线程数threads_connected。这是动态变化的。

如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝。

因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。

但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。

这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放,

该 错误的简便的检查办法是,在刷新页面时,不断监视threads_connected的变化。如果max_connections足够大,而 threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技 术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。

查看max_connections

进入MySQL,用命令:show variables
查看数据库最大可连接数的变量值:max_connections

查看threads_connected

进入MySQL,用命令:show status
查看当前活动的连接线程变量值:threads_connected


设置max_connections

设置办法是在my.cnf文件中,添加下面的最后红色的一行:

--------------------------------------------------------------------------------

[mysqld]
port=3306
#socket=MySQL
skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=194K
set-variable = table_cache=4
set-variable = sort_buffer=64K
set-variable = net_buffer_length=2K
set-variable = max_connections=32000


--------------------------------------------------------------------------------

修改完毕后,重启MySQL即可。当然,为了确保设置正确,应该查看一下max_connections。

注意:
1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384;
2、除max_connections外,上述其他配置应该根据你们系统自身需要进行配置,不必拘泥;
3、添加了最大允许连接数,对系统消耗增加不大。
4、如果你的mysql用的是my.ini作配置文件,设置类似,但设置的格式要稍作变通。

 

注: ERROR 1436 (HY000): Thread stack overrun:  4508 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use 'mysqld -O thread_stack=#' to specify a bigger stack.

 

可通过上面方法改变set-variable = thread_stack=194K值

参考 http://wolfchina.blogbus.com/logs/2005/08/

分享到:
评论

相关推荐

    Mysql Error Code : 1436 Thread stack overrun

    在MySQL中,错误代码1436提示“Thread stack overrun”,这意味着执行的SQL语句或存储过程所需的内存超出了MySQL线程栈的限制。线程栈是操作系统为每个线程分配的一块内存区域,用于存储函数调用时的局部变量、参数...

    MySQL thread_stack连接线程的优化

    `Thread_cache_size`是配置参数,用来设定Thread Cache池中可以存放的最大连接线程数。例如,如果设置为32,那么系统最多可以缓存32个空闲的连接线程。这有助于减少线程创建和销毁的频率,从而提高系统响应速度。 `...

    解决mysql数据库连接过多的错误

    `max_connections`参数定义了MySQL服务器允许的最大并发连接数,未设置时默认为100,最大值为16384。`threads_connected`则是当前活跃的数据库连接线程数量,这个数字会随着用户的连接和断开动态变化。如果`threads_...

    C语言头文件 STACK

    C语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 STACKC语言头文件 ...

    JVM Thread Stack线程栈分析

    JVM Thread Stack线程栈分析

    STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack

    在汇编语言的学习中,"STACK1_SEGMENT_STACK.rar_STACK1 SEGMENT_stack segment stack"这个标题提到了两个关键概念:栈段(Stack Segment)和栈(Stack)。栈在计算机科学中扮演着至关重要的角色,尤其是在汇编语言...

    MySQL配置文件解析

    5. `max_connect_errors`:每个主机允许的最大连接错误次数,超过后会暂时阻止该主机的连接。 6. `table_open_cache`:设定MySQL可以同时打开的表的数量,与系统资源和并发查询量有关。 7. `max_allowed_packet`:...

    mysql中的内存使用.pdf

    在讨论MySQL内存管理时,我们需要理解MySQL在处理数据库操作时对内存的使用,这对于数据库性能优化至关重要。MySQL的内存管理可以根据使用的内存类型被划分为两大类:线程独享内存和全局共享内存。 首先是线程独享...

    mysql帮助 mysql安装问题解决

    在安装MySQL过程中,可能会遇到各种问题,这些问题可能源于多种因素,包括但不限于系统配置、依赖冲突、权限设置等。本文将详细解析MySQL安装时可能出现的问题及其解决策略,旨在为用户提供全面的指导。 首先,安装...

    StackDocklet.zip

    10. **社区支持**:StackDocklet可能有一个活跃的用户社区,用户可以在其中分享配置、插件以及解决使用中遇到的问题。 通过这个“StackDocklet.zip”文件,用户可以开始体验和利用StackDocklet提供的强大功能,提升...

    Z-Stack 3.0.2-.7z.zip_Z-STACK 3.0.2_Z-STACK-3.0.2_z-stack 3_z-st

    2. **安全性增强**:随着物联网安全问题日益凸显,Z-Stack 3.0.2 提供了更强的安全特性,包括AES-128加密、认证机制以及安全密钥管理,保护网络免受非法访问和数据篡改。 3. **API 更新**:开发者接口(API)进行了...

    解决CodeSmith不能读取MySql数据库字段说明的问题

    总的来说,解决CodeSmith无法读取MySql数据库字段说明的问题涉及多个方面,包括驱动程序的更新、连接字符串的正确配置、模板的优化以及错误排查。通过系统性的检查和尝试,通常能找出问题的症结并找到合适的解决方案...

    RockyLinux9.0 yum安装 mysql8.0

    在本文中,我们将详细介绍如何在Rocky Linux 9.0系统上使用`yum`命令安装MySQL 8.0,以及安装后的配置步骤,包括启动服务、添加自启动、登录、重置密码、开放远程连接、防火墙设置等关键操作。 **一、检查与安装** ...

    本机最大TCP连接测试程序(附源码)

    标题中的“本机最大TCP连接测试程序”是一个用于探索计算机能建立的最大TCP连接数的软件应用。TCP(传输控制协议)是互联网上广泛使用的面向连接的、可靠的传输层协议,负责在两个通信端点之间建立稳定的通信链路。...

    Stack Stack的实现

    Stack Stack的实现

    linux_thread_stack_size.rar_linux stack size_linux stacksize_thr

    pthread_create(&thread_id, &attr, thread_function, NULL); ``` 2. 修改内核参数:通过`sysctl`系统调用或者直接编辑`/etc/sysctl.conf`配置文件,可以改变所有线程的默认栈大小。例如,在`sysctl.conf`中添加`...

Global site tag (gtag.js) - Google Analytics