首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Httpd在专用服务器上的512连接处被阻塞

问Httpd在专用服务器上的512连接处被阻塞
EN

Database Administration用户
提问于 2021-04-24 00:30:50
回答 1查看 34关注 0票数 -1

我在专用服务器上的Httpd有严重的性能问题。在流量高峰时,httpd stucks在512连接上,并且没有任何原因,所有连接都是缓慢的,并且正在下载的文件随消息删除:(顺便说一句。它的高流量服务器)

读取响应标头时

上游过早关闭连接

此外,所有参数的工作人员连接都达到了最大值。

见下文:

我还尝试重新启动服务器,并使用tcp优化和db将配置更改为max,但它没有解决任何问题。

查询日志不提供任何额外信息。你能告诉我如何修复或优化它吗?

这种节流只从交通高峰开始。数据库运行在mariadb上,下面是httpd的配置:

代码语言:javascript
复制
<IfModule prefork.c>
   StartServers        3
   MinSpareServers     20
   MaxSpareServers     40
   ServerLimit         256
   MaxClients          256
   MaxRequestsPerChild 500
</IfModule>

我还注意到,很多httpd进程都是创建的。

我在1000上有max_connections,对于表我使用缓存memcache,my.cf上也有配置:

  • table_open_cache =256个
  • thread_cache_size = 12
EN

回答 1

Database Administration用户

发布于 2021-04-24 03:16:26

我不敢苟同。高max_connections会导致问题。以下是总体情况:

当有几十个数据库连接正在积极地尝试执行SELECTs等时,它们会争夺各种资源--互斥、cpu、I/O和数据库服务器中的各种“共享”东西。

在这一点上,mysqld试图做到公平,给每个连接一份资源。这导致每一个人花费越来越长的时间,因为它被一个接一个的东西等着。

最好是节流客户端中的连接。这样,“正在运行”的连接就能运行得更快,从而减少阻塞,避免阻塞。

当堵塞开始时,它会停留一段时间。“每秒查询”的数量停止增长。但是,“延迟”(完成任务所需的时间)贯穿了整个过程。这种阻塞会备份到客户端(httpd)。

连接池对限制争夺资源的连接数量没有任何作用。

Memcached是缓存前面的缓存;它可能是也可能不是在聚合这种情况。如果它与其他部件位于同一台服务器上,那么它很可能会受到伤害-- Memcached需要ram和CPU,从而占用mysqld中的一些资源。

尝试max_connections = 200,并将httpd的子级数量限制在该数目之内。

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

https://dba.stackexchange.com/questions/290370

复制
相关文章

相似问题

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