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

我正在运行在MySQL之上运行的Rails应用程序的扩展问题。 我正在使用memcached,并有很多索引。

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

但那么这就引起我的疑问。 我应该将MySQL数据库移动到第二个专用数据库服务器(从而增加了MySQL可以用于缓冲池等的内存量),还是应该增加当前服务器上的RAM,该服务器既支持Rails也支持MySQL?

如果我将MySQL移到自己的服务器上,我假设我增加了MySQL可用的内存。 但是我担心在两台服务器之间通过networking发送的MySQL查询的延迟,而不是通过mysql.sock

有什么build议?

首先,了解你的瓶颈在哪里。 你的应用程序主要是从SQL读取? 写作? 如果大多数情况下读取的数据集不再适合内存,则添加更多的RAM可能会提高性能。 也许这些数据已经适合内存,并且MySQL占用CPU [例如,它执行全表扫描,因为它在某些情况下不能像子查询那样使用索引]

一些忠告:

  • 从使用像Munin这样的软件来监视服务器上发生的事情。
  • 启用慢查询日志logging
  • 分析你发送给SQL的查询 – 比如用mysqsla – 也许毕竟你做了不必要的全表扫描?
  • 使用解释每个最频繁的querries

之后才决定是否:

  • 获得更多的CPU能力[并将MySQL移到另一台机器上]
  • 购买更多的内存
  • 优化您的代码