gpt4 book ai didi

php - 处理大量的 MySQL 连接

转载 作者:可可西里 更新时间:2023-11-01 09:04:47 28 4
gpt4 key购买 nike

我有一个 JS 脚本,它可以做一件简单的事情——向我的服务器发送一个 ajax 请求。在这台服务器上,我建立了一个 PDO 连接,执行一个准备好的语句:

SELECT * FROM table WHERE param1 = :param1 AND param2 = :param2;

其中table是5-50行,5-15列,数据平均每天变化一次的表格。

然后我将 json 结果回显给脚本并对其进行处理,假设我在控制台记录它。


问题是脚本每秒运行约 10,000 次。这给了我很多与数据库的连接,并且我一直在服务器日志中收到 无法连接到数据库 错误。这意味着有时它可以工作,当数据库进程空闲时,有时则不能。

我该如何处理?

可能的解决方案:

  1. Memcached - 它也会很慢,它不是为此而创建的。性能将与数据库相似或更差。
  2. 服务器上的文件而不是数据库上的文件 - 很好的解决方案,但结构将是问题所在。

还有更好的吗?

最佳答案

对于很少更改的极少量数据,我会将其设为普通的 PHP 文件。

一旦您获得数组形式的数据,就可以使用 var_export() 将其转储到 php 文件中。然后只包含这个文件并使用一个简单的循环来搜索数据。

另一种选择是使用 Memcached,它正是为此类工作而创建的,并且在具有高速网络的快速机器上,memcached 每秒可以轻松处理 200,000 多个请求,这远高于您适度的 10k rps。

您甚至可以从 tract 中删除 PHP,让 Nginx 使用 ngx_http_memcached_module 直接向 Memcached 询问存储的值

如果您想坚持使用当前基于 Mysql 的解决方案,您可以增加 mysql 配置中的 max_connections 数量,但是,使其超过 200 可能还需要对操作系统进行一些调整。但是您不应该建立持久连接,这会使事情变得更糟。

关于php - 处理大量的 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999426/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com