【问题标题】:MARIADB/MYSQL : multiple connections from localhost to localhostMARIADB/MYSQL:从本地主机到本地主机的多个连接
【发布时间】:2019-04-04 12:52:26
【问题描述】:

我正在运行带有 apache 2.4.38 和 Maria DB 10.1.38 + PHP 7.3.3 的 Windows Server 2016

有时,我可以看到(使用 netstat)从 127.0.0.1:3306 到 127.0.0.1:64XXX 有很多很多很多的连接。

netstat 示例:

Proto Local IP        Distant IP     Stat      PID
TCP   127.0.0.1:64896 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64897 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64898 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64899 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64900 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64901 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64902 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64903 127.0.0.1:3306 TIME_WAIT 0
TCP   127.0.0.1:64904 127.0.0.1:3306 TIME_WAIT 0

它会达到 151 个连接(这是最大限制)并且它会阻止其他连接。 我没有看到任何在 SQL 请求上“循环”的 PHP 脚本...

我在日志/日志错误中没有任何痕迹,我不知道是什么导致了这么多连接。

您是否知道从哪里开始寻找这些联系或可能是什么原因造成这些联系?

感谢您的帮助

【问题讨论】:

  • 查看这里了解更多信息stackoverflow.com/questions/5062839/…
  • 每次页面加载都会使 Apache 启动一个新的 PHP 进程,该进程(可能)打开与 MySQL 的连接。尝试使用持久连接,以便重用当前句柄,而不是每次都创建一个新句柄。很难告诉你它为什么会发生,但由于我遇到了许多奇怪的事情,我很久以前就停止使用 Apache。可悲的是,您没有使用 *nix,这会阻止您使用 nginx 和 php-fpm(这不仅是首选方式,也是最高效的方式)。考虑使用虚拟机并在 windows 下放弃 apache。

标签: mysql mariadb


【解决方案1】:
  • 完成后断开您的 PHP 程序。
  • 除了极少数例外,每个 PHP 脚本只有一个连接。
  • 如果有连接池,查看是否有高于 151 的限制。
  • 减少子 Apache 生成的数量。 (即使有数百个用户连接,产生数百个也很少有用。)
  • 加快查询速度,使其更快完成。
  • 如果您有多个“用户”,请将每个用户的限制设置得更低。

(几乎没有人需要 151。)

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2011-09-08
    • 2020-09-04
    相关资源
    最近更新 更多