重的mysql使用CPU或内存

Liz*_*ard 5 mysql performance amazon-s3

我有一个亚马逊s3实例,我们在服务器上的项目执行了很多INSERT和UPDATE以及一些复杂的SELECT

我们发现MySQL经常占用很多CPU.

我试图确定更高的内存或更高的CPU是否更好的上述设置.

以下是输出 cat /proc/meminfo

MemTotal:      7347752 kB
MemFree:         94408 kB
Buffers:         71932 kB
Cached:        2202544 kB
SwapCached:          0 kB
Active:        6483248 kB
Inactive:       415888 kB
SwapTotal:           0 kB
SwapFree:            0 kB
Dirty:          168264 kB
Writeback:           0 kB
AnonPages:     4617848 kB
Mapped:          21212 kB
Slab:           129444 kB
SReclaimable:    86076 kB
SUnreclaim:      43368 kB
PageTables:      54104 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   3673876 kB
Committed_AS:  5384852 kB
VmallocTotal: 34359738367 kB
VmallocUsed:       180 kB
VmallocChunk: 34359738187 kB
Run Code Online (Sandbox Code Playgroud)

当前设置:

高CPU超大型实例

7 GB内存20 EC2计算单元(8个虚拟核,每个具有2.5 EC2计算单元)1690 GB实例存储64位平台I/O性能:高API名称:c1.xlarge

可能的设置:

高内存双超大实例

34.2 GB内存13 EC2计算单元(4个虚拟核,每个具有3.25 EC2计算单元)850 GB实例存储64位平台I/O性能:高API名称:m2.2xlarge

Nic*_*oft 6

我会在 RAID 中使用 32GB 内存和更多硬盘。CPU 不会有太大帮助 - 你有足够的 CPU 能力。您还需要正确配置mysql。

  • 为操作系统缓存和临时表保留 1-2 GB。
  • 增加 tmp_table_size
  • 移除交换
  • 优化 query_cache_size (不要让它太大 - 请参阅有关它的 mysql 文档)
  • 定期运行 FLUSH QUERY CACHE。如果您的查询缓存 <512 MB - 每 5 分钟运行一次。这不会清理缓存,而是对其进行优化(碎片整理)。这是来自 mysql 文档:

对查询缓存进行碎片整理以更好地利用其内存。与 FLUSH TABLES 或 RESET QUERY CACHE 不同,FLUSH QUERY CACHE 不会从缓存中删除任何查询。

但是我注意到另一个解决方案有一半的磁盘空间:850GB,这可能会减少硬盘数量。这通常是一个坏主意。数据库中最大的问题是硬盘。如果您使用 RAID5 - 请确保您不使用较少的硬盘。如果您根本不使用raid - 我建议使用raid 0。