【问题标题】:Nginx, PHP, Apache, MySQL - while heavy page is loading all php requests wait (only for the requesting client)Nginx, PHP, Apache, MySQL - 当重页加载时所有 php 请求等待(仅用于请求客户端)
【发布时间】:2019-04-07 10:59:58
【问题描述】:

该网站有一些繁重的页面,在这些页面中,我正在加载统计图表,这需要一些繁重且缓慢的 MySQL 查询。

在加载繁重的页面并且浏览器正在等待响应时,每个其他页面(例如联系页面)也会卡在加载中。并在重页返回响应后立即加载所有其他页面。

需要注意的是,减速仅针对发出请求的客户端,而重载页面正在加载其他客户端可以立即打开联系页面或任何其他页面。

该网站在 Apache 上运行,带有 prefork 和 Nginx 以获得静态文件和灵活性。 MySQL 表位于 InnoDB 存储引擎上。

似乎每个客户端的最大请求数或类似的东西有某种限制,但我不知道去哪里找。我不认为这是一个 PHP 配置,因为我尝试使用 sleep(10); 设置一个 PHP 页面,并且在页面加载时,没有其他页面变慢。也许是一些 MySQL 配置..?

【问题讨论】:

标签: php mysql apache nginx


【解决方案1】:

我发现了我的问题,它是 PHP 会话锁定。如果使用 session_start() 的请求未完成,则使用 session 的另一个请求正在等待,在第一个请求完成后,第二个可以开始运行。更多信息在这里https://ma.ttias.be/php-session-locking-prevent-sessions-blocking-in-requests/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2012-08-15
    • 2023-01-15
    • 1970-01-01
    相关资源
    最近更新 更多