首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql线程计数

问mysql线程计数
EN

Server Fault用户
提问于 2011-11-30 16:21:25
回答 3查看 6.9K关注 0票数 1

我们有一个使用apache和mysql的web应用程序。通常(根据Munin),我们的MySQL线程计数在任何时候都在2到4之间。前几天,我们的服务器几乎停了下来。HTTP请求很慢或者根本不通过,SSH可以工作,但是需要30+秒来注册击键,等等。所以我们拉出Munin,唯一超出正常边界的是Mysql线程计数。CPU使用率低于1%,负载低于1.0,可用内存充足。

正如前面提到的,线程数在2到4之间浮动。当我们慢下来的时候,线程数已经飙升到14。所以我开始在互联网上搜索,我发现在大多数情况下,当你开始遇到缓慢的查询时,你会看到一个更高的线程数。如果我正确地理解了它,那么请求将需要一段时间来处理,同时也会出现其他请求,因此将创建一个新线程来处理请求(是吗?)。但是在减速的时候,我们有0次缓慢的查询。

我的问题是:还有什么可以导致mysql创建额外的线程。线程的突然激增会不会导致服务器慢下来?为了解决这个问题,我们重新启动了apache,一切都回到了它美丽的、正常的自我。考虑到服务器Vitals (CPU、RAM、Network等)都是理想的,线程计数是唯一不合适的东西,这似乎是最符合逻辑的事情,作为可能的原因。

如果有关系,我们使用的是Mysql 5.1.40。服务器是FreeBSD 7.2,所讨论的服务器在监狱里。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2011-11-30 17:14:15

根据Apache在做什么,很多同时对Apache的请求都可能导致这种情况。例如,一个大的网格CMS可能会在早期打开一个MySQL连接,生成一个页面需要很长时间,直到连接完成才会关闭连接。

FWIW,我发现对当前连接的定期轮询通常不会显示真实情况。你应该看看最大值_使用_连接。不幸的是,这个值很难管理:https://dba.stackexchange.com/questions/6040/how-can-i-get-the-maxium-number-of-concurrent-connections-to-mysql-over-a-specif

当发生这种情况时,请查看SHOW FULL PROCESSLIST;的输出,看看是否有许多进程处于休眠状态。至少有一个可能导致MySQL挂起显示变量的错误。

票数 2
EN

Server Fault用户

发布于 2013-08-11 14:11:54

而不是使用:

代码语言:javascript
复制
mysql -e "show global status"|grep -i threads_connected

或lsof

您可以考虑将procfs本身与通用的GNU/Linux实用程序一起使用:

代码语言:javascript
复制
find /proc/`pidof mysqld`/fd/ -follow -type s | wc -l
票数 0
EN

Server Fault用户

发布于 2017-04-16 15:36:17

我参加聚会迟到了,但最近刚解决了一个类似的问题。如果您碰巧使用的是MyISAM存储引擎,并且有一个写操作,那么所有其他读取请求都必须等到表级锁释放之后。如果查询跨越多个表,则有两个复杂的问题: 1.连接的结果不能全部存储在内存中,并且调用文件排序,这意味着更多的磁盘I/O和2。更多的表被锁定,因此读取的查询更有可能被排队。在大多数情况下,MySQL将完成写入,读取将清除。如果操作系统未能释放文件的锁(这种情况比您预期的更频繁),那么MySQL线程将被卡住。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/336280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档