![Apache 状态“当前正在处理 150 个请求,0 个空闲工作者”](https://linux22.com/image/759858/Apache%20%E7%8A%B6%E6%80%81%E2%80%9C%E5%BD%93%E5%89%8D%E6%AD%A3%E5%9C%A8%E5%A4%84%E7%90%86%20150%20%E4%B8%AA%E8%AF%B7%E6%B1%82%EF%BC%8C0%20%E4%B8%AA%E7%A9%BA%E9%97%B2%E5%B7%A5%E4%BD%9C%E8%80%85%E2%80%9D.png)
当达到“当前正在处理 150 个请求,0 个空闲工作者”条件时,我的 Apache 服务器记分板状态如下所示。
--日志跟踪---
本地主机的 Apache 服务器状态(通过 127.0.0.1)
服务器版本:Apache/2.4.18 (Ubuntu) OpenSSL/1.0.2g 服务器 MPM:worker 服务器构建时间:2020-08-12T21:35:50 __________________________________________________________________
父服务器配置代数:3 父服务器 MPM 代数:2 服务器正常运行时间:1 天 9 小时 19 分钟 58 秒 服务器负载:0.85 0.93 1.04 总访问量:931102 - 总流量:17.8 GB CPU 使用率:u3289.89 s950.31 cu0 cs0 - 3.53% CPU 负载 7.76 请求/秒 - 155.9 kB/秒 - 20.1 kB/请求 当前正在处理 150 个请求,0 个空闲工作者
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
--日志跟踪结束--
问题)我们使用 Apache MPM 模块,以下是工作者设置。
文件: /etc/apache2/mods-enabled/worker.conf
服务器限制 25 启动服务器 2 线程限制 64 最大客户端 150 最小备用线程 25 最大备用线程 75 每个子线程 25 每个子线程最大请求数 0 监听后备日志 511我们发现 MaxClients 已满(150),这是一个值得关注的问题,并试图找出为什么 MaxClient 会临时变成 150。
我验证了应用程序日志(bitbucket),没有在 Java 应用程序中发现问题。
现在的问题是如何调试这个/找到根本原因,为什么线程处于“读取请求”状态。
以下是 Ubuntu 服务器中已加载模块的列表。
已加载的模块:core_module(静态)so_module(静态)watchdog_module(静态)http_module(静态)log_config_module(静态)logio_module(静态)version_module(静态)unixd_module(静态)access_compat_module(共享)alias_module(共享)auth_basic_module(共享)authn_core_module(共享)authn_file_module(共享)authz_core_module(共享)authz_groupfile_module(共享)authz_host_module(共享)authz_user_module(共享)autoindex_module(共享)cgid_module(共享)dav_module(共享)dav_fs_module(共享)deflate_module(共享)dir_module(共享)env_module(共享)filter_module(共享)headers_module(共享)mime_module(共享)negotiation_module (共享) proxy_module (共享) proxy_http_module (共享) reqtimeout_module (共享) rewrite_module (共享) setenvif_module (共享) mod_shib (共享) socache_shmcb_module (共享) ssl_module (共享) status_module (共享) mpm_worker_module (共享)
寻求这方面的指导,以找出为什么线程达到 MaxClients (150) 以及线程处于“读取请求”状态约 22 秒。