Rails 3.2.3 mysql错误“max_prepared_stmt_count”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Rails 3.2.3 mysql错误“max_prepared_stmt_count”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1489字,纯文字阅读大概需要3分钟。
内容图文
我在带有mysql数据库服务器的虚拟主机上运行使用apache2 / passenger部署的Rails 3.2.3应用程序.在很多流量到达网站后我收到了这个错误:
ActiveRecord::StatementInvalid (Mysql::Error: Can't create more than
max_prepared_stmt_count statements (current value: 16382)
我认为它与流量有关,但如果是这样,我必须找到解决方法.以前有人有这个错误吗?我无法弄清楚如何阻止它.
这是我在mysql中看到的:
MySQL的>显示全局状态,例如’com_stmt%’;
| Com_stmt_close | 1720319
| Com_stmt_execute | 2094137 |
| Com_stmt_fetch | 0 |
| Com_stmt_prepare | 1768924 |
| Com_stmt_reprepare | 0 |
| Com_stmt_reset | 0 |
| Com_stmt_send_long_data | 0 |
————————- ———
我正在运行resque gem.
解决方法:
好的,我暂时在这里试着回答.我使用femtoRgon的提示来检查状态.然后我将这两行添加到我的database.yml文件中
pool: 30
prepared_statements: false
我重新启动了mysql.现在让应用程序运行一段时间后,我看到了这个:
mysql> show global status like 'com_stmt%';
| Com_stmt_close ? ? ? ? ?| 189017 |
| Com_stmt_execute ? ? ? ?| 189017 |
| Com_stmt_fetch ? ? ? ? ?| 0 ? ? ?|
| Com_stmt_prepare ? ? ? ?| 189017 |
| Com_stmt_reprepare ? ? ?| 0 ? ? ?|
| Com_stmt_reset ? ? ? ? ?| 0 ? ? ?|
| Com_stmt_send_long_data | 0 ? ? ?|
在任何地方都没有差异…加上我用来看到这个:
Ecard Load (0.1ms) SELECT `ecards`.* FROM `ecards` WHERE `ecards`.`id` = ? LIMIT 1 [["id", "34"]]
我现在看到了这个:
Ecard Load (0.4ms) SELECT `ecards`.* FROM `ecards` WHERE `ecards`.`id` = 34 LIMIT 1
我认为这表明我不再使用预备语句了?会喜欢任何想法 – 我想我必须继续监控,看看情况如何……
内容总结
以上是互联网集市为您收集整理的Rails 3.2.3 mysql错误“max_prepared_stmt_count”全部内容,希望文章能够帮你解决Rails 3.2.3 mysql错误“max_prepared_stmt_count”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。