如何解决 mysql 线程堆栈溢出?
Posted
技术标签:
【中文标题】如何解决 mysql 线程堆栈溢出?【英文标题】:How do I resolve a mysql Thread Stack Overrun? 【发布时间】:2012-05-09 17:48:25 【问题描述】:我在 mysql 上有一个存储过程。它在我的本地 MAMP 环境中运行,该过程运行良好,但是当我将其移动到 linode 服务器/主机时,它无法运行。我收到“线程堆栈溢出”错误。我尝试将线程堆栈从初始值 64K 向上提升。我将值更改为 128K,然后更改为 256K。但问题仍然存在。
我正在开发一个 Lucid ubuntu 512MB linode 服务器。我在我的 mysql/my.cnf 文件中运行 linode 的建议配置:
key_buffer = 16K
max_allowed_packet = 1M
thread_stack = 64K
table_cache = 4
sort_buffer = 64K
net_buffer_length = 2K
有人可以帮忙吗?你能推荐不同的配置吗?
【问题讨论】:
【参考方案1】:如果您使用的是 Ubuntu 14.04,您可以在此处增加您的 MySQL 线程堆栈:
/etc/mysql/my.cnf
并更改此值thread_stack
,它可能具有这样的值,例如:
thread_stack = 192K
之后你需要像这样重启 MySQL:
sudo service mysql restart
请参阅Ubuntu 14.04, MySQL documentation 了解更多信息。
【讨论】:
在 Ubuntu-16.04.3 中,文件位置和名称已更改。我必须运行sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
来更改 thread_stack
的值。
另外,在 Ubuntu 16.04 上重启 MySQL:sudo systemctl restart mysql.service
我的 my.cnf 中已经有了这个,但是值太低了。将其设置为 192 已修复,因此感谢您的指导!【参考方案2】:
我是个白痴。我将 thread_stack 重置为更高的数字,但我没有重新启动服务器。重新启动解决了问题。
【讨论】:
以上是关于如何解决 mysql 线程堆栈溢出?的主要内容,如果未能解决你的问题,请参考以下文章