在生产环境中使用 RAM Disk 来加速应用程序性能

Posted

技术标签:

【中文标题】在生产环境中使用 RAM Disk 来加速应用程序性能【英文标题】:Use of RAM Disk in production environment to speed up application performance 【发布时间】:2012-11-20 19:42:14 【问题描述】:

我的应用程序由于其与数据库的聊天性质而面临问题。由于许多 I/O 操作或数据库调用,完成一个流程特殊的批处理作业需要时间。代码优化正在进行中,这个过程需要一些时间才能显示出积极的结果。

能否在生产环境安装RAMdisk,在RAMDisk中安装jdk和SQL server? 这对所有 I/O 操作都有帮助吗? 至少在批量作业的情况下,我能否获得一些性能提升?

【问题讨论】:

您使用的是哪个 SQL 服务器?它是否在同一台机器上运行(即 ping 是否相关)? 您还可以考虑使用企业级固态驱动器,它的寻道时间会大大缩短,并且数据持久性更高。带有备用电池的基于 RAM 的存储也很受欢迎,但请务必经常备份! 目前我使用的是 SQL Server 2008,很快就会升级到 SQL Server 2012 【参考方案1】:

正如@BaileyS 建议的那样,一个好的折衷方案是使用耐用的 SSD 驱动器。如果您有大量数据,您可以只使用 SSD 来存储数据库索引并将数据保存在常规驱动器上。

我不建议使用 RAM 磁盘,除非您经常备份它,或者上面的数据不重要。

相反,我会尝试最大化您的操作系统的文件缓存。如果您的文件缓存在 RAM 中,那么使用它们就像在 RAM 磁盘上一样。在 Linux 上,您可以降低内核的vfs_cache_pressure,这意味着内核将更加努力地将缓存文件保留在 RAM 中。并将vm.swappiness 设置为100,以便系统更主动地换出未使用的内存页面,保持RAM 可用于缓存。这可以大大加快速度。见Can I configure my Linux system for more aggressive file system caching?

【讨论】:

【参考方案2】:

假设大部分时间都花在数据库等待 I/O 上,RAM 磁盘肯定会有所帮助(但持久性消失了)。但是为什么不简单地选择像h2 这样的内存数据库,甚至可以采用嵌入式模式来减少网络延迟?

【讨论】:

以上是关于在生产环境中使用 RAM Disk 来加速应用程序性能的主要内容,如果未能解决你的问题,请参考以下文章

RAM disk

RAM / Disk Memory的访问速度是不是取决于其容量?

在 macOS High Sierra 上创建 APFS RAM 磁盘

关于OS Page Cache的简单介绍

VMSS上用Managed Disk和Data Disk进行自动扩展

docker 基本学习