在专用服务器上使用 MySQL 与使用 MySQL + Rails 应用增加服务器上的 RAM

在专用服务器上使用 MySQL 与使用 MySQL + Rails 应用增加服务器上的 RAM

我在 MySQL 上运行 Rails 应用时遇到了扩展问题。我使用的是 memcached 并且有很多索引。

我还开始增加某些 my.cnf 设置的值,例如tmp_table_sizeinnodb_buffer_pool_size

但这又引出了我的问题。我是否应该将 MySQL 数据库移至第二台专用数据库服务器(从而增加 MySQL 可用于缓冲池等的内存量)或者是否应该增加当前服务器上(同时托管 Rails 和 MySQL)的 RAM?

我假设如果我将 MySQL 移至其自己的服务器,则可以大大增加 MySQL 可用的 RAM。但我担心通过两台服务器之间的网络(而不是通过)发送的 MySQL 查询的延迟mysql.sock

有什么建议吗?

答案1

首先,了解瓶颈在哪里。您的应用程序主要是从 SQL 读取数据吗?还是写入数据?如果您主要是读取数据,而您的数据集不再适合内存,那么增加更多 RAM 可能会提高性能。也许数据已经适合内存,而 MySQL 占用了 CPU(例如,它会进行全表扫描,因为在某些情况下(如子查询)它无法使用索引)

一些忠告:

  • 首先使用以下软件来监控服务器的情况穆宁
  • 启用慢查询日志
  • 分析你发送给 SQL 的查询 - 例如韓國- 也许毕竟你进行了不必要的全表扫描?
  • 对每个最常见的查询使用 explain

只有在此之后,才决定是否:

  • 获得更多的 CPU 能力[并将 MySQL 移至另一台机器]
  • 购买更多 RAM
  • 优化代码

相关内容