我有一台配备 16GB RAM 的生产服务器,附带 32 位 CentOS 安装。
该服务器上托管的网站每天都在增加流量,这导致了一些 MySQL 性能问题。我运行mysqltuner.pl
后收到以下消息:
[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
我可以使用 32 位操作系统吗,还是需要安装 64 位版本?
答案1
32 位 CentOS 安装可以让你顺利运行。但是,正如警告所述,使用 32 位操作系统意味着 MySQL 实际上无法使用系统中安装的所有(甚至大部分)RAM。
我觉得这太浪费了。如果硬件支持 64 位,我肯定会用 64 位操作系统替换 32 位操作系统,是的。您可能希望先进行一些测试,和/或使用第二台服务器来找出切换操作系统时会出现什么问题,因为总会有某些问题出现。
严格来说,你不需要需要安装 64 位操作系统,但您绝对应该这样做。而且,在 32 位操作系统的 RAM 限制开始给您带来问题之前,您很可能很快就会这样做。
答案2
32 位二进制的最大虚拟地址空间为 2^32 (4GB) - 一旦达到此限制,就无法继续前进。
你应该切换到 64 位吗?当然。
您不仅不会再遇到内存障碍,通用 64 位指令集通常比通用 32 位具有更好的性能(由于 x86 的绝对历史),因此,切换到 x64 将在内存和计算速度方面带来好处。
显然,如果您自己使用确切 CPU 的 arch 目标定制编译了 x86 二进制文件,您可能会发现与 x64 相比的性能并没有太大差别,但是,由于您使用的是预先打包的 CentOS 二进制文件,显然情况并非如此。
答案3
虽然答案已被接受,但这里的讨论还缺少很多内容。
首先:Alexandru 没有提到这台机器上运行着什么数据库引擎,也没有提到它是否是专用的 DBMS 服务器,或者是否还运行着其他东西,也没有提到数据的大小,也没有提到任何有关物理 I/O / VFS 使用情况的统计数据。
对于基于 MyISAM 的专用服务器,您不会从增加内存寻址中获得太多好处。VFS 在缓存 I/O 方面的表现与 MySQL 一样好。另一方面,如果它是 innodb - 那么天哪,是的:专用盒子上的 innodb 缓冲池应该约为专用机器上物理内存的 80%。
无论使用哪种 DBMS,在 DBMS 上进行比较操作时,切换到 64 位都会带来显著的性能优势 - 具体优势程度取决于您是否执行大量基于哈希或 B 树的查找。
如果使用同一个盒子进行网络服务,那么很大的区别在于如果你在盒子上使用了很多 SSL - SSL 就是用于计算大数字 - 所以即使没有最近的英特尔芯片中的 AES 加速,那里也会有所改进。