最大化 SQL 连接 + Apache 线程

最大化 SQL 连接 + Apache 线程

我有一台专用服务器,上面运行 MySQL + Apache。我运行一个每 3 秒轮询一次的聊天脚本。昨晚我的 MySQL 服务器由于负载过大而死机了。我想知道如何最大限度地利用我的 MySQL 线程以及 Apache 线程。

有人可以指出可以帮助我实现相同目标的 URL 吗?

感谢您的时间。

答案1

MySQL 性能信息的权威来源是MySQL 性能博客。还有高性能 MySQL杰里米·扎沃德尼 (Jeremy Zawodny) 的书。

您可能希望在应用程序中使用某种形式的连接池,这样它将重用现有的数据库连接,而不是为每个新会话创建新的连接。这将减少打开新 TCP 连接和 MySQL 进行的任何处理的开销。它还应该减少 MySQL 正在运行的空闲连接数,因为每个连接都需要一定量的内存才能存在。

另一个可以大幅减少数据库负载的方法是集成 memcached。Memcached 是一个内存分布式键值存储;就像一个网络连接的哈希映射。您可以修改应用程序以轮询 memcached,如果没有数据,则检查数据库。当您更改数据时,您会将其写入数据库并使 memcached 中的数据无效。这意味着您将轮询速度明显更快的 memcached,而不是 MySQL。

一旦你实现了这些功能,并且只有当你实现了这些功能之后,你才可以开始考虑调整 MySQL 参数。如果你不知道自己在做什么,很有可能会把事情搞砸,最终导致数据库比以前更慢。在你尝试之前,我至少会读一读《MySQL 性能》这本书。

如果您有能力花更多的钱,第一个改进是将数据库拆分到单独的服务器上。如果这还不够,您可以开始考虑使用主从复制设置,其中写入到主服务器,但读取分散在主服务器和从服务器之间。这对于读取繁重的工作负载特别有效,这相当常见。

相关内容